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
00310
00311
00312 #ifdef UNIT_TESTING_ON
00313
00316 virtual int initializeForTesting() = 0;
00317 #endif
00318
00319 IHeaderBlock(){};
00320
00321 IHeaderBlock(const IHeaderBlock& rCopy){};
00322
00328 virtual IHeaderBlock* clone() = 0;
00329
00333 virtual ~IHeaderBlock() {};
00334
00335 static HeaderBlockFunctions ms_VFtable;
00336 static bool bInitialized;
00337 };
00338 AXIS_CPP_NAMESPACE_END
00339 #endif
00340 AXIS_CPP_NAMESPACE_START
00341 typedef struct {
00342 void* _object;
00343 HeaderBlockFunctions* _functions;
00344 } HeaderBlock_C;
00345 AXIS_CPP_NAMESPACE_END
00346 #ifndef __cplusplus
00347 typedef HeaderBlock_C HeaderBlock;
00348 #endif
00349
00350 #endif
00351