00001 #ifndef DocumentImpl_HEADER_GUARD_
00002 #define DocumentImpl_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 #include <util/XercesDefs.hpp>
00074 #include "ParentNode.hpp"
00075 #include "DOM_Node.hpp"
00076 #include "DOM_Element.hpp"
00077 #include "util/RefVectorOf.hpp"
00078 #include "util/RefHashTableOf.hpp"
00079 #include "XMLDeclImpl.hpp"
00080
00081 class DocumentTypeImpl;
00082 class ElementImpl;
00083 class AttrImpl;
00084 class CDATASectionImpl;
00085 class CommentImpl;
00086 class DeepNodeListImpl;
00087 class DocumentFragmentImpl;
00088 class DocumentTypeImpl;
00089 class DStringPool;
00090 class EntityImpl;
00091 class EntityReferenceImpl;
00092 class NotationImpl;
00093 class ProcessingInstructionImpl;
00094 class TextImpl;
00095 class NodeIteratorImpl;
00096 class TreeWalkerImpl;
00097 class DOM_NodeFilter;
00098 class NodeFilterImpl;
00099 class DOM_DOMImplementation;
00100 class DOMString;
00101 class NodeIDMap;
00102
00103 typedef RefVectorOf<NodeIteratorImpl> NodeIterators;
00104 typedef RefVectorOf<TreeWalkerImpl> TreeWalkers;
00105
00106
00107 class DocumentImpl: public ParentNode {
00108 private:
00109
00110
00111
00112
00113 void setDocumentType(DocumentTypeImpl *doctype);
00114
00115 DocumentTypeImpl *docType;
00116 ElementImpl *docElement;
00117 DStringPool *namePool;
00118 NodeIDMap *fNodeIDMap;
00119
00120 NodeIterators *iterators;
00121 TreeWalkers *treeWalkers;
00122 friend class NodeIteratorImpl;
00123 friend class TreeWalkerImpl;
00124 friend class DOMParser;
00125
00126 public:
00127 DocumentImpl();
00128 DocumentImpl(const DOMString &namespaceURI,
00129 const DOMString &qualifiedName, DocumentTypeImpl *doctype);
00130 virtual ~DocumentImpl();
00131 virtual bool isDocumentImpl();
00132
00133 virtual NodeImpl *cloneNode(bool deep);
00134 virtual DOMString getNodeName();
00135 virtual short getNodeType();
00136 virtual DocumentImpl * getOwnerDocument();
00137 virtual AttrImpl *createAttribute(const DOMString &name);
00138 virtual CDATASectionImpl *createCDATASection(const DOMString &data);
00139 virtual CommentImpl *createComment(const DOMString &data);
00140 virtual DocumentFragmentImpl *createDocumentFragment();
00141 virtual DocumentTypeImpl *createDocumentType(const DOMString &name);
00142 virtual DocumentTypeImpl *createDocumentType(const DOMString &qName,
00143 const DOMString &publicId,
00144 const DOMString &systemId);
00145 virtual ElementImpl *createElement(const DOMString & tagName);
00146 virtual ElementImpl *createElement(const XMLCh *tagName);
00147 virtual EntityImpl *createEntity(const DOMString & name);
00148 virtual EntityReferenceImpl *createEntityReference(const DOMString & name);
00149 virtual NotationImpl *createNotation(const DOMString & name);
00150 virtual ProcessingInstructionImpl *createProcessingInstruction(const DOMString & target, const DOMString & data);
00151 virtual TextImpl *createTextNode(const DOMString & data);
00152 virtual DocumentTypeImpl *getDoctype();
00153 virtual ElementImpl *getDocumentElement();
00154 virtual DeepNodeListImpl *getElementsByTagName(const DOMString & tagname);
00155 virtual NodeImpl *insertBefore(NodeImpl *newChild, NodeImpl *refChild);
00156 static bool isXMLName(const DOMString & s);
00157 virtual void referenced();
00158 virtual NodeImpl *removeChild(NodeImpl *oldChild);
00159 virtual void setNodeValue(const DOMString & x);
00160 virtual void unreferenced();
00161 static NodeIteratorImpl* createNodeIterator(DOM_Node root, unsigned long whatToShow, DOM_NodeFilter* filter, bool entityReferenceExpansion);
00162 static TreeWalkerImpl* createTreeWalker(DOM_Node root, unsigned long whatToShow, DOM_NodeFilter* filter, bool entityReferenceExpansion);
00163 virtual XMLDeclImpl* createXMLDecl(const DOMString& version, const DOMString& encoding, const DOMString& standalone);
00164
00165
00166
00167 virtual NodeImpl *importNode(NodeImpl *source, bool deep);
00168 virtual ElementImpl *createElementNS(const DOMString &namespaceURI,
00169 const DOMString &qualifiedName);
00170 virtual AttrImpl *createAttributeNS(const DOMString &namespaceURI,
00171 const DOMString &qualifiedName);
00172 virtual DeepNodeListImpl *getElementsByTagNameNS(const DOMString &namespaceURI,
00173 const DOMString &localName);
00174 virtual ElementImpl *getElementById(const DOMString &elementId);
00175
00176
00177
00178 static int indexofQualifiedName(const DOMString & qName);
00179 static bool isKidOK(NodeImpl *parent, NodeImpl *child);
00180
00181 inline NodeIDMap * getNodeIDMap() {return fNodeIDMap;};
00182 };
00183
00184 #endif