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 #include <axis/IAttribute.h>
00023
00024 #ifdef __cplusplus
00025
00026 AXIS_CPP_NAMESPACE_START
00027
00028 class Attribute;
00029
00030 AXIS_CPP_NAMESPACE_END
00031
00032 #endif
00033
00034 enum HEADER_BLOCK_STD_ATTR_TYPE
00035 { ROLE_NEXT=1, ROLE_NONE=2,
00036 ROLE_ULTIMATE_RECEIVER=3,
00037 ACTOR=4, MUST_UNDERSTAND_TRUE= 5,
00038 MUST_UNDERSTAND_FALSE=6
00039 };
00040
00041
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067 AXIS_CPP_NAMESPACE_START
00068 typedef struct {
00069 const BasicNode* (AXISCALL* getFirstChild)(void* pObj);
00070
00071 } HeaderBlockFunctions;
00072 AXIS_CPP_NAMESPACE_END
00073 #ifdef __cplusplus
00074 AXIS_CPP_NAMESPACE_START
00075 class IHeaderBlock
00076 {
00077 public:
00085 virtual int addNamespaceDecl(IAttribute *pAttribute)=0;
00086
00095 virtual IAttribute* createNamespaceDecl(const AxisChar *prefix,
00096 const AxisChar *uri)=0;
00097
00098 virtual const BasicNode* getFirstChild() =0;
00104 virtual int getNoOfChildren() =0;
00105
00133 virtual BasicNode* createChild(NODE_TYPE eNODE_TYPE,
00134 AxisChar *pachLocalName, AxisChar *pachPrefix, AxisChar *pachUri,
00135 AxisChar* pachValue) = 0;
00136
00158 virtual BasicNode* createImmediateChild(NODE_TYPE eNODE_TYPE,
00159 AxisChar *pachLocalName, AxisChar *pachPrefix, AxisChar *pachUri,
00160 AxisChar* pachValue) = 0;
00161
00191 virtual Attribute* createStdAttribute(HEADER_BLOCK_STD_ATTR_TYPE
00192 eStdAttrType, SOAP_VERSION eSOAP_VERSION) =0;
00193
00204 virtual Attribute* createAttribute(const AxisChar* localname,
00205 const AxisChar* prefix,
00206 const AxisChar* uri, const AxisChar* value) = 0;
00207
00217 virtual Attribute* createAttribute(const AxisChar *localname,
00218 const AxisChar *prefix, const AxisChar *value) = 0;
00227 virtual const AxisChar* getAttributeValue(const AxisChar* localname,
00228 const AxisChar* prefix) = 0;
00229
00230
00243 virtual BasicNode* createImmediateChild(NODE_TYPE eNODE_TYPE) = 0;
00244
00259 virtual BasicNode* createChild(NODE_TYPE eNODE_TYPE)=0;
00260
00268 virtual const BasicNode* getLastChild() = 0;
00269
00278 virtual const BasicNode* getChild(int iChildPosition) = 0;
00279
00286 virtual int addChild(BasicNode* pBasicNode)=0;
00287
00293 virtual void setLocalName(const AxisChar* localname)=0;
00294
00300 virtual void setUri(const AxisChar* uri)=0;
00301
00302
00303
00304
00305
00306
00307
00308
00309
00315 virtual void setPrefix(const AxisChar* prefix)=0;
00316
00317 #ifdef UNIT_TESTING_ON
00318
00321 virtual int initializeForTesting() = 0;
00322 #endif
00323
00324 IHeaderBlock(){};
00325
00326 IHeaderBlock(const IHeaderBlock& rCopy){};
00327
00333 virtual IHeaderBlock* clone() = 0;
00334
00338 virtual ~IHeaderBlock() {};
00339
00340 static HeaderBlockFunctions ms_VFtable;
00341 static bool bInitialized;
00342 };
00343 AXIS_CPP_NAMESPACE_END
00344 #endif
00345 AXIS_CPP_NAMESPACE_START
00346 typedef struct {
00347 void* _object;
00348 HeaderBlockFunctions* _functions;
00349 } HeaderBlock_C;
00350 AXIS_CPP_NAMESPACE_END
00351 #ifndef __cplusplus
00352 typedef HeaderBlock_C HeaderBlock;
00353 #endif
00354
00355 #endif
00356