00001 #ifndef ElementImpl_HEADER_GUARD_
00002 #define ElementImpl_HEADER_GUARD_
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
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
00073
00074 #include <xercesc/util/XercesDefs.hpp>
00075 #include "AttrImpl.hpp"
00076 #include "AttrMapImpl.hpp"
00077 #include "ParentNode.hpp"
00078
00079 class DeepNodeListImpl;
00080
00081 class CDOM_EXPORT ElementImpl: public ParentNode {
00082 protected:
00083 DOMString name;
00084 AttrMapImpl *attributes;
00085
00086 public:
00087 ElementImpl(DocumentImpl *ownerDoc, const DOMString &name);
00088 ElementImpl(const ElementImpl &other, bool deep=false);
00089 virtual ~ElementImpl();
00090
00091 virtual bool isElementImpl();
00092 virtual NodeImpl * cloneNode(bool deep);
00093 virtual DOMString getNodeName();
00094 virtual short getNodeType();
00095 virtual DOMString getAttribute(const DOMString &name);
00096 virtual AttrImpl *getAttributeNode(const DOMString &name);
00097 virtual NamedNodeMapImpl * getAttributes();
00098 virtual DeepNodeListImpl * getElementsByTagName(const DOMString &tagname);
00099 virtual DOMString getTagName();
00100 virtual void removeAttribute(const DOMString &name);
00101 virtual AttrImpl * removeAttributeNode(AttrImpl * oldAttr);
00102 virtual AttrImpl *setAttribute(const DOMString &name, const DOMString &value);
00103 virtual AttrImpl *setAttributeNode(AttrImpl *newAttr);
00104 virtual void setReadOnly(bool readOnly, bool deep);
00105
00106
00107 virtual DOMString getAttributeNS(const DOMString &namespaceURI,
00108 const DOMString &localName);
00109 virtual AttrImpl *setAttributeNS(const DOMString &namespaceURI,
00110 const DOMString &qualifiedName, const DOMString &value);
00111 virtual void removeAttributeNS(const DOMString &namespaceURI,
00112 const DOMString &localName);
00113 virtual AttrImpl *getAttributeNodeNS(const DOMString &namespaceURI,
00114 const DOMString &localName);
00115 virtual AttrImpl *setAttributeNodeNS(AttrImpl *newAttr);
00116 virtual DeepNodeListImpl *getElementsByTagNameNS(const DOMString &namespaceURI,
00117 const DOMString &localName);
00118
00119 virtual void setOwnerDocument(DocumentImpl *doc);
00120 virtual bool hasAttributes();
00121 virtual bool hasAttribute(const DOMString &name);
00122 virtual bool hasAttributeNS(const DOMString &namespaceURI, const DOMString &localName);
00123
00124
00125
00126 virtual NamedNodeMapImpl *NNM_cloneMap(NodeImpl *nnm_ownerNode);
00127 virtual int NNM_findNamePoint(const DOMString &nnm_name);
00128 virtual unsigned int NNM_getLength();
00129 virtual NodeImpl *NNM_getNamedItem(const DOMString &nnm_name);
00130 virtual NodeImpl *NNM_item(unsigned int nnm_index);
00131 virtual void NNM_removeAll();
00132 virtual NodeImpl *NNM_removeNamedItem(const DOMString &nnm_name);
00133 virtual NodeImpl *NNM_setNamedItem(NodeImpl *nnm_arg);
00134 virtual void NNM_setReadOnly(bool nnm_readOnly, bool nnm_deep);
00135
00136 virtual int NNM_findNamePoint(const DOMString &nnm_namespaceURI, const DOMString &nnm_localName);
00137 virtual NodeImpl *NNM_getNamedItemNS(const DOMString &nnm_namespaceURI, const DOMString &nnm_localName);
00138 virtual NodeImpl *NNM_setNamedItemNS(NodeImpl *nnm_arg);
00139 virtual NodeImpl *NNM_removeNamedItemNS(const DOMString &nnm_namespaceURI, const DOMString &nnm_localName);
00140 virtual void NNM_setOwnerDocument(DocumentImpl *nnm_doc);
00141
00142
00143 virtual AttrMapImpl *getDefaultAttributes();
00144 virtual void setupDefaultAttributes();
00145
00146
00147
00148
00149 static void reinitElementImpl();
00150 };
00151
00152 #endif