00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00024 #if !defined(_BASICNODE_H____OF_AXIS_INCLUDED_)
00025 #define _BASICNODE_H____OF_AXIS_INCLUDED_
00026
00027 #include "GDefine.h"
00028
00029 #ifdef __cplusplus
00030
00031 #include <list>
00032
00033
00034 AXIS_CPP_NAMESPACE_START
00035 using namespace std;
00036
00037 class SoapSerializer;
00038
00039 AXIS_CPP_NAMESPACE_END
00040
00041 #endif
00042
00043 #include <axis/IAttribute.h>
00044
00045 enum NODE_TYPE { ELEMENT_NODE=1, CHARACTER_NODE};
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072 typedef struct {
00073 int (AXISCALL* getNoOfChildren)(void* pObj);
00074
00075 } BasicNodeFunctions;
00076
00077 #ifdef __cplusplus
00078
00079 AXIS_CPP_NAMESPACE_START
00080 using namespace std;
00081
00082 class BasicNode
00083 {
00084 public:
00085
00097 virtual IAttribute* getAttribute(AxisChar* pachPrefix, AxisChar* pachURI, AxisChar* pachLocalname) = 0;
00098
00103 virtual IAttribute* getFirstAttribute() = 0;
00104
00109 virtual IAttribute* getLastAttribute() = 0;
00110
00115 virtual IAttribute* getNextAttribute() = 0;
00116
00121 virtual IAttribute* getCurrentAttribute() = 0;
00122
00123
00134 virtual IAttribute* createAttribute(const AxisChar* localname,
00135 const AxisChar* prefix, const AxisChar* uri,
00136 const AxisChar* value) =0;
00137
00147 virtual IAttribute* createAttribute(const AxisChar* localname,
00148 const AxisChar* prefix, const AxisChar* value)=0 ;
00149
00158 virtual IAttribute* createAttribute(const AxisChar* localname,
00159 const AxisChar* value)=0 ;
00160
00167 virtual const AxisChar* getLocalName() = 0;
00168
00176 virtual int getNoOfChildren() = 0;
00177
00184 virtual const BasicNode* getFirstChild() const = 0;
00185
00192 virtual const BasicNode* getLastChild() const = 0;
00193
00201 virtual const BasicNode* getChild(int iChildPosition) const = 0;
00202
00210 virtual int addChild(BasicNode* pBasicNode) =0;
00211
00217 virtual NODE_TYPE getNodeType() const =0;
00218
00225 virtual const AxisChar* getValue() const =0;
00226
00234 virtual int setValue(const AxisChar* pachValue)=0;
00235
00243 virtual int setURI(const AxisChar* sURI) =0;
00244
00252 virtual int setLocalName(const AxisChar* sLocalName) =0;
00253
00261 virtual int setPrefix(const AxisChar* sPrefix) =0;
00262
00267 virtual const AxisChar* getURI() = 0;
00268
00273 virtual const AxisChar* getPrefix() = 0;
00274
00275 virtual int serialize(SoapSerializer& pSZ) =0;
00276 virtual int serialize(SoapSerializer& pSZ,
00277 std::list<AxisChar*>& lstTmpNameSpaceStack) =0;
00278 BasicNode();
00279 BasicNode(const AxisChar* pachValue, NODE_TYPE eNodeType = ELEMENT_NODE);
00280 BasicNode(const BasicNode& rCopy);
00281 virtual BasicNode* clone() = 0;
00282 virtual ~BasicNode();
00283
00284 protected:
00289 NODE_TYPE m_iNodeType;
00290
00295 AxisChar* m_pachValue;
00296
00297 };
00298
00299 AXIS_CPP_NAMESPACE_END
00300
00301 #endif
00302
00303 AXIS_CPP_NAMESPACE_START
00304
00305 typedef struct {
00306 void* _object;
00307 BasicNodeFunctions* _functions;
00308 } BasicNode_C;
00309
00310 AXIS_CPP_NAMESPACE_END
00311
00312 #ifndef __cplusplus
00313 typedef BasicNode_C BasicNode;
00314 #endif
00315
00316 #endif
00317