00001 #ifndef DOMNode_HEADER_GUARD_
00002 #define DOMNode_HEADER_GUARD_
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #include <xercesc/util/XercesDefs.hpp>
00025
00026 XERCES_CPP_NAMESPACE_BEGIN
00027
00028
00029 class DOMDocument;
00030 class DOMNamedNodeMap;
00031 class DOMNodeList;
00032 class DOMUserDataHandler;
00033
00138 class CDOM_EXPORT DOMNode {
00139 protected:
00140
00141
00142
00145 DOMNode() {}
00146 DOMNode(const DOMNode &) {}
00148
00149 private:
00150
00151
00152
00155 DOMNode & operator = (const DOMNode &);
00157
00158 public:
00159
00160
00161
00168 virtual ~DOMNode() {};
00170
00171
00172
00173
00181 enum NodeType {
00182 ELEMENT_NODE = 1,
00183 ATTRIBUTE_NODE = 2,
00184 TEXT_NODE = 3,
00185 CDATA_SECTION_NODE = 4,
00186 ENTITY_REFERENCE_NODE = 5,
00187 ENTITY_NODE = 6,
00188 PROCESSING_INSTRUCTION_NODE = 7,
00189 COMMENT_NODE = 8,
00190 DOCUMENT_NODE = 9,
00191 DOCUMENT_TYPE_NODE = 10,
00192 DOCUMENT_FRAGMENT_NODE = 11,
00193 NOTATION_NODE = 12
00194 };
00195
00222 enum DOMTreePosition {
00223 TREE_POSITION_PRECEDING = 0x01,
00224 TREE_POSITION_FOLLOWING = 0x02,
00225 TREE_POSITION_ANCESTOR = 0x04,
00226 TREE_POSITION_DESCENDANT = 0x08,
00227 TREE_POSITION_EQUIVALENT = 0x10,
00228 TREE_POSITION_SAME_NODE = 0x20,
00229 TREE_POSITION_DISCONNECTED = 0x00
00230 };
00232
00233
00234
00235
00238
00239
00240
00245 virtual const XMLCh * getNodeName() const = 0;
00246
00254 virtual const XMLCh * getNodeValue() const = 0;
00255
00260 virtual short getNodeType() const = 0;
00261
00272 virtual DOMNode *getParentNode() const = 0;
00273
00288 virtual DOMNodeList *getChildNodes() const = 0;
00295 virtual DOMNode *getFirstChild() const = 0;
00296
00303 virtual DOMNode *getLastChild() const = 0;
00304
00311 virtual DOMNode *getPreviousSibling() const = 0;
00312
00319 virtual DOMNode *getNextSibling() const = 0;
00320
00326 virtual DOMNamedNodeMap *getAttributes() const = 0;
00327
00339 virtual DOMDocument *getOwnerDocument() const = 0;
00340
00341
00342
00343
00363 virtual DOMNode * cloneNode(bool deep) const = 0;
00364
00392 virtual DOMNode *insertBefore(DOMNode *newChild,
00393 DOMNode *refChild) = 0;
00394
00395
00419 virtual DOMNode *replaceChild(DOMNode *newChild,
00420 DOMNode *oldChild) = 0;
00433 virtual DOMNode *removeChild(DOMNode *oldChild) = 0;
00434
00455 virtual DOMNode *appendChild(DOMNode *newChild) = 0;
00456
00457
00458
00459
00468 virtual bool hasChildNodes() const = 0;
00469
00470
00471
00472
00488 virtual void setNodeValue(const XMLCh *nodeValue) = 0;
00490
00513 virtual void normalize() = 0;
00514
00530 virtual bool isSupported(const XMLCh *feature,
00531 const XMLCh *version) const = 0;
00532
00548 virtual const XMLCh * getNamespaceURI() const = 0;
00549
00556 virtual const XMLCh * getPrefix() const = 0;
00557
00567 virtual const XMLCh * getLocalName() const = 0;
00568
00602 virtual void setPrefix(const XMLCh * prefix) = 0;
00603
00610 virtual bool hasAttributes() const = 0;
00612
00632 virtual bool isSameNode(const DOMNode* other) const = 0;
00633
00676 virtual bool isEqualNode(const DOMNode* arg) const = 0;
00677
00678
00706 virtual void* setUserData(const XMLCh* key,
00707 void* data,
00708 DOMUserDataHandler* handler) = 0;
00709
00723 virtual void* getUserData(const XMLCh* key) const = 0;
00724
00725
00744 virtual const XMLCh* getBaseURI() const = 0;
00745
00758 virtual short compareTreePosition(const DOMNode* other) const = 0;
00759
00803 virtual const XMLCh* getTextContent() const = 0;
00804
00818 virtual void setTextContent(const XMLCh* textContent) = 0;
00819
00837 virtual const XMLCh* lookupNamespacePrefix(const XMLCh* namespaceURI,
00838 bool useDefault) const = 0;
00839
00851 virtual bool isDefaultNamespace(const XMLCh* namespaceURI) const = 0;
00852
00866 virtual const XMLCh* lookupNamespaceURI(const XMLCh* prefix) const = 0;
00867
00884 virtual DOMNode* getInterface(const XMLCh* feature) = 0;
00886
00887
00888
00889
00905 virtual void release() = 0;
00907 #if defined(XML_DOMREFCOUNT_EXPERIMENTAL)
00908
00909
00910
00920 virtual void decRefCount() {}
00922
00923
00924
00925
00932 virtual void incRefCount() {}
00934 #endif
00935 };
00936
00937
00938
00939
00940 #define GET_OWNER_DOCUMENT(ptr) \
00941 ((DOMDocumentImpl*)(ptr->getOwnerDocument()))
00942
00943 #define GET_DIRECT_MM(ptr) \
00944 ptr ? ((DOMDocumentImpl*)ptr)->getMemoryManager() : XMLPlatformUtils::fgMemoryManager
00945
00946 #define GET_INDIRECT_MM(ptr) \
00947 !ptr ? XMLPlatformUtils::fgMemoryManager : \
00948 GET_OWNER_DOCUMENT(ptr) ? GET_OWNER_DOCUMENT(ptr)->getMemoryManager() : \
00949 XMLPlatformUtils::fgMemoryManager
00950
00951
00952
00953
00954 #define GetDOMNodeMemoryManager GET_INDIRECT_MM(this)
00955
00956 XERCES_CPP_NAMESPACE_END
00957
00958 #endif
00959