00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #if !defined(_IHEADERBLOCK_H____OF_AXIS_INCLUDED_)
00018 #define _IHEADERBLOCK_H____OF_AXIS_INCLUDED_
00019
00020 #include "BasicNode.h"
00021 #include "SoapEnvVersions.h"
00022
00023 #ifdef __cplusplus
00024 class Attribute;
00025 #endif
00026
00027 enum HEADER_BLOCK_STD_ATTR_TYPE
00028 { ROLE_NEXT=1, ROLE_NONE=2,
00029 ROLE_ULTIMATE_RECEIVER=3,
00030 ACTOR=4, MUST_UNDERSTAND_TRUE= 5,
00031 MUST_UNDERSTAND_FALSE=6
00032 };
00033
00034
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061 typedef struct {
00062 const BasicNode* (AXISCALL* getFirstChild)(void* pObj);
00063
00064 } HeaderBlockFunctions;
00065
00066 #ifdef __cplusplus
00067
00068 class IHeaderBlock
00069 {
00070 public:
00071 virtual const BasicNode* getFirstChild() =0;
00077 virtual int getNoOfChildren() =0;
00078
00106 virtual BasicNode* createChild(NODE_TYPE eNODE_TYPE,
00107 AxisChar *pachLocalName, AxisChar *pachPrefix, AxisChar *pachUri,
00108 AxisChar* pachValue) = 0;
00109
00131 virtual BasicNode* createImmediateChild(NODE_TYPE eNODE_TYPE,
00132 AxisChar *pachLocalName, AxisChar *pachPrefix, AxisChar *pachUri,
00133 AxisChar* pachValue) = 0;
00134
00164 virtual Attribute* createStdAttribute(HEADER_BLOCK_STD_ATTR_TYPE
00165 eStdAttrType, SOAP_VERSION eSOAP_VERSION) =0;
00166
00177 virtual Attribute* createAttribute(const AxisChar* localname,
00178 const AxisChar* prefix,
00179 const AxisChar* uri, const AxisChar* value) = 0;
00180
00190 virtual Attribute* createAttribute(const AxisChar *localname,
00191 const AxisChar *prefix, const AxisChar *value) = 0;
00192
00205 virtual BasicNode* createImmediateChild(NODE_TYPE eNODE_TYPE) = 0;
00206
00221 virtual BasicNode* createChild(NODE_TYPE eNODE_TYPE)=0;
00222
00230 virtual const BasicNode* getLastChild() = 0;
00231
00240 virtual const BasicNode* getChild(int iChildPosition) = 0;
00241
00248 virtual int addChild(BasicNode* pBasicNode)=0;
00249
00255 virtual void setLocalName(const AxisChar* localname)=0;
00256
00262 virtual void setUri(const AxisChar* uri)=0;
00263
00264
00265
00266
00267
00268
00269
00270
00271
00272
00273
00274 #ifdef UNIT_TESTING_ON
00275
00278 virtual int initializeForTesting() = 0;
00279 #endif
00280
00281 IHeaderBlock(){};
00282
00283 IHeaderBlock(const IHeaderBlock& rCopy){};
00284
00290 virtual IHeaderBlock* clone() = 0;
00291
00295 virtual ~IHeaderBlock() {};
00296
00297 static HeaderBlockFunctions ms_VFtable;
00298 static bool bInitialized;
00299 };
00300
00301 #endif
00302
00303 typedef struct {
00304 void* _object;
00305 HeaderBlockFunctions* _functions;
00306 } HeaderBlock_C;
00307
00308 #ifndef __cplusplus
00309 typedef HeaderBlock_C HeaderBlock;
00310 #endif
00311
00312 #endif
00313