summaryrefslogtreecommitdiffstats
path: root/src/dom/domimpl.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/dom/domimpl.h')
-rwxr-xr-xsrc/dom/domimpl.h2002
1 files changed, 2002 insertions, 0 deletions
diff --git a/src/dom/domimpl.h b/src/dom/domimpl.h
new file mode 100755
index 000000000..677f5eb8c
--- /dev/null
+++ b/src/dom/domimpl.h
@@ -0,0 +1,2002 @@
+#ifndef __DOMIMPL_H__
+#define __DOMIMPL_H__
+/**
+ * Phoebe DOM Implementation.
+ *
+ * This is a C++ approximation of the W3C DOM model, which follows
+ * fairly closely the specifications in the various .idl files, copies of
+ * which are provided for reference. Most important is this one:
+ *
+ * http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/idl-definitions.html
+ *
+ * Authors:
+ * Bob Jamison
+ *
+ * Copyright (C) 2005 Bob Jamison
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+
+#include "dom.h"
+
+#include <map>
+
+namespace org
+{
+namespace w3c
+{
+namespace dom
+{
+
+
+
+class DOMImplementationSourceImpl;
+class DOMImplementationImpl;
+class NodeImpl;
+class CharacterDataImpl;
+class AttrImpl;
+class ElementImpl;
+class TextImpl;
+class CommentImpl;
+class TypeInfoImpl;
+class UserDataHandlerImpl;
+class DOMErrorImpl;
+class DOMErrorHandlerImpl;
+class DOMLocatorImpl;
+class DOMConfigurationImpl;
+class CDATASectionImpl;
+class DocumentTypeImpl;
+class NotationImpl;
+class EntityImpl;
+class EntityReferenceImpl;
+class ProcessingInstructionImpl;
+class DocumentFragmentImpl;
+class DocumentImpl;
+
+
+
+/*#########################################################################
+## DOMImplementationSourceImpl
+#########################################################################*/
+
+class DOMImplementationSourceImpl : public DOMImplementationSource
+{
+public:
+
+ /**
+ *
+ */
+ virtual DOMImplementation *getDOMImplementation(const DOMString &features);
+
+ /**
+ *
+ */
+ virtual DOMImplementationList getDOMImplementationList(const DOMString &features);
+
+
+ //##################
+ //# Non-API methods
+ //##################
+
+ /**
+ *
+ */
+ DOMImplementationSourceImpl();
+
+ /**
+ *
+ */
+ virtual ~DOMImplementationSourceImpl();
+
+protected:
+
+
+ DOMImplementationImpl *domImpl;
+ DOMImplementationList domImplList;
+};
+
+
+
+
+
+/*#########################################################################
+## DOMImplementationImpl
+#########################################################################*/
+/**
+ *
+ */
+class DOMImplementationImpl : public DOMImplementation
+{
+public:
+
+
+ /**
+ *
+ */
+ DOMImplementationImpl();
+
+ /**
+ *
+ */
+ virtual ~DOMImplementationImpl();
+
+ /**
+ *
+ */
+ virtual bool hasFeature(const DOMString& feature, const DOMString& version);
+
+
+ /**
+ *
+ */
+ virtual DocumentType *createDocumentType(const DOMString& qualifiedName,
+ const DOMString& publicId,
+ const DOMString& systemId)
+ throw(DOMException);
+
+ /**
+ *
+ */
+ virtual Document *createDocument(const DOMString& namespaceURI,
+ const DOMString& qualifiedName,
+ DocumentType *doctype)
+ throw(DOMException);
+ /**
+ *
+ */
+ virtual DOMObject *getFeature(const DOMString& feature,
+ const DOMString& version);
+
+
+protected:
+
+};
+
+
+
+
+/*#########################################################################
+## NodeImpl
+#########################################################################*/
+
+/**
+ *
+ */
+class NodeImpl : virtual public Node
+{
+
+ friend class DocumentImpl;
+
+public:
+
+ /**
+ *
+ */
+ virtual DOMString getNodeName();
+
+ /**
+ *
+ */
+ virtual DOMString getNodeValue() throw (DOMException);
+
+ /**
+ *
+ */
+ virtual void setNodeValue(const DOMString& val) throw (DOMException);
+
+ /**
+ *
+ */
+ virtual unsigned short getNodeType();
+
+ /**
+ *
+ */
+ virtual Node *getParentNode();
+
+ /**
+ *
+ */
+ virtual NodeList getChildNodes();
+
+ /**
+ *
+ */
+ virtual Node *getFirstChild();
+
+ /**
+ *
+ */
+ virtual Node *getLastChild();
+
+ /**
+ *
+ */
+ virtual Node *getPreviousSibling();
+
+ /**
+ *
+ */
+ virtual Node *getNextSibling();
+
+ /**
+ *
+ */
+ virtual NamedNodeMap &getAttributes();
+
+
+ /**
+ *
+ */
+ virtual Document *getOwnerDocument();
+
+ /**
+ *
+ */
+ virtual Node *insertBefore(const Node *newChild,
+ const Node *refChild)
+ throw(DOMException);
+
+ /**
+ *
+ */
+ virtual Node *replaceChild(const Node *newChild,
+ const Node *oldChild)
+ throw(DOMException);
+
+ /**
+ *
+ */
+ virtual Node *removeChild(const Node *oldChild)
+ throw(DOMException);
+
+ /**
+ *
+ */
+ virtual Node *appendChild(const Node *newChild)
+ throw(DOMException);
+
+ /**
+ *
+ */
+ virtual bool hasChildNodes();
+
+ /**
+ *
+ */
+ virtual Node *cloneNode(bool deep);
+
+ /**
+ *
+ */
+ virtual void normalize();
+
+ /**
+ *
+ */
+ virtual bool isSupported(const DOMString& feature,
+ const DOMString& version);
+
+ /**
+ *
+ */
+ virtual DOMString getNamespaceURI();
+
+ /**
+ *
+ */
+ virtual DOMString getPrefix();
+
+ /**
+ *
+ */
+ virtual void setPrefix(const DOMString& val) throw(DOMException);
+
+ /**
+ *
+ */
+ virtual DOMString getLocalName();
+
+ /**
+ *
+ */
+ virtual bool hasAttributes();
+
+ /**
+ *
+ */
+ virtual DOMString getBaseURI();
+
+ /**
+ *
+ */
+ virtual unsigned short compareDocumentPosition(const Node *other);
+
+ /**
+ *
+ */
+ virtual DOMString getTextContext() throw(DOMException);
+
+
+ /**
+ *
+ */
+ virtual void setTextContext(const DOMString &val) throw(DOMException);
+
+
+ /**
+ *
+ */
+ virtual DOMString lookupPrefix(const DOMString &namespaceURI);
+
+
+ /**
+ *
+ */
+ virtual bool isDefaultNamespace(const DOMString &namespaceURI);
+
+
+ /**
+ *
+ */
+ virtual DOMString lookupNamespaceURI(const DOMString &prefix);
+
+
+ /**
+ *
+ */
+ virtual bool isEqualNode(const Node *node);
+
+
+
+ /**
+ *
+ */
+ virtual DOMObject *getFeature(const DOMString &feature,
+ const DOMString &version);
+
+ /**
+ *
+ */
+ virtual DOMUserData *setUserData(const DOMString &key,
+ const DOMUserData *data,
+ const UserDataHandler *handler);
+
+
+ /**
+ *
+ */
+ virtual DOMUserData *getUserData(const DOMString &namespaceURI);
+
+
+ //##################
+ //# Non-API methods
+ //##################
+
+ /**
+ *
+ */
+ virtual void bindingsAdd(const DOMString &prefix, const DOMString &namespaceURI)
+ {
+ bindings[prefix] = namespaceURI;
+ }
+
+ /**
+ *
+ */
+ virtual void bindingsClear()
+ {
+ bindings.clear();
+ }
+
+ DOMString bindingsFind(const DOMString &prefix)
+ {
+ std::map<DOMString, DOMString>::iterator iter =
+ bindings.find(prefix);
+ if (iter != bindings.end())
+ {
+ DOMString ret = iter->second;
+ return ret;
+ }
+ if (parent)
+ {
+ DOMString ret = parent->bindingsFind(prefix);
+ if (ret.size() > 0)
+ return ret;
+ }
+ return "";
+ }
+
+ /**
+ *
+ */
+ virtual void setNodeName(const DOMString &qualifiedName);
+
+ /**
+ *
+ */
+ virtual void setNamespaceURI(const DOMString &theNamespaceURI);
+
+ /**
+ *
+ */
+ DOMString lookupNamespacePrefix(const DOMString &namespaceURI,
+ Node *originalElement);
+ /**
+ *
+ */
+ NodeImpl();
+
+ /**
+ *
+ */
+ NodeImpl(DocumentImpl *owner);
+
+ /**
+ *
+ */
+ NodeImpl(DocumentImpl *owner, const DOMString &nodeName);
+
+ /**
+ *
+ */
+ NodeImpl(DocumentImpl *owner, const DOMString &namespaceURI, const DOMString &nodeName);
+
+ /**
+ *
+ */
+ virtual ~NodeImpl();
+
+
+ /**
+ *
+ */
+ void assign(const NodeImpl &other);
+
+protected:
+
+ /**
+ * Set up the internal values
+ */
+ void init();
+
+ unsigned short nodeType;
+
+ NodeImpl *parent;
+
+ NodeImpl *prev;
+
+ NodeImpl *next;
+
+ DOMUserData *userData;
+
+ DOMString prefix;
+
+ DOMString localName;
+
+ DOMString nodeName;
+
+ DOMString namespaceURI;
+
+ DOMString baseURI;
+
+ DOMString nodeValue;
+
+ NodeImpl *firstChild;
+ NodeImpl *lastChild;
+
+ DocumentImpl *ownerDocument;
+
+ NamedNodeMap attributes;
+
+ class UserDataEntry
+ {
+ public:
+ UserDataEntry(const DOMString &theKey,
+ const DOMUserData *theData,
+ const UserDataHandler *theHandler)
+ {
+ next = NULL;
+ key = theKey;
+ data = (DOMUserData *)theData;
+ handler = (UserDataHandler *)theHandler;
+ }
+ ~UserDataEntry()
+ {
+ //delete anything after me, too
+ if (next)
+ delete next;
+ }
+
+ UserDataEntry *next;
+ DOMString key;
+ DOMUserData *data;
+ UserDataHandler *handler;
+ };
+
+ UserDataEntry *userDataEntries;
+
+ //### Our prefix->namespaceURI bindings
+
+ std::map<DOMString, DOMString> bindings;
+
+
+};
+
+
+
+/*#########################################################################
+## CharacterDataImpl
+#########################################################################*/
+
+/**
+ *
+ */
+class CharacterDataImpl : virtual public CharacterData, protected NodeImpl
+{
+public:
+
+ /**
+ *
+ */
+ virtual DOMString getData() throw(DOMException);
+
+ /**
+ *
+ */
+ virtual void setData(const DOMString& val) throw(DOMException);
+
+ /**
+ *
+ */
+ virtual unsigned long getLength();
+
+ /**
+ *
+ */
+ virtual DOMString substringData(unsigned long offset,
+ unsigned long count)
+ throw(DOMException);
+
+ /**
+ *
+ */
+ virtual void appendData(const DOMString& arg) throw(DOMException);
+
+ /**
+ *
+ */
+ virtual void insertData(unsigned long offset,
+ const DOMString& arg)
+ throw(DOMException);
+
+ /**
+ *
+ */
+ virtual void deleteData(unsigned long offset,
+ unsigned long count)
+ throw(DOMException);
+
+ /**
+ *
+ */
+ virtual void replaceData(unsigned long offset,
+ unsigned long count,
+ const DOMString& arg)
+ throw(DOMException);
+
+
+ //##################
+ //# Non-API methods
+ //##################
+
+ /**
+ *
+ */
+ CharacterDataImpl();
+
+
+ /**
+ *
+ */
+ CharacterDataImpl(DocumentImpl *owner, const DOMString &value);
+
+ /**
+ *
+ */
+ virtual ~CharacterDataImpl();
+
+protected:
+
+ //'data' is the nodeValue
+
+};
+
+
+
+
+
+/*#########################################################################
+## AttrImpl
+#########################################################################*/
+
+/**
+ *
+ */
+class AttrImpl : virtual public Attr, public NodeImpl
+{
+public:
+
+ /**
+ *
+ */
+ virtual DOMString getName();
+
+ /**
+ *
+ */
+ virtual bool getSpecified();
+
+ /**
+ *
+ */
+ virtual DOMString getValue();
+
+ /**
+ *
+ */
+ virtual void setValue(const DOMString& val) throw(DOMException);
+
+ /**
+ *
+ */
+ virtual Element *getOwnerElement();
+
+
+ /**
+ *
+ */
+ virtual TypeInfo *getSchemaTypeInfo();
+
+
+ /**
+ *
+ */
+ virtual bool getIsId();
+
+
+
+ //##################
+ //# Non-API methods
+ //##################
+
+ /**
+ *
+ */
+ virtual void setOwnerElement(const Element *elem);
+
+ /**
+ *
+ */
+ AttrImpl(DocumentImpl *owner, const DOMString &name);
+
+ /**
+ *
+ */
+ AttrImpl(DocumentImpl *owner, const DOMString &namespaceURI, const DOMString &name);
+
+ /**
+ *
+ */
+ virtual ~AttrImpl();
+
+protected:
+
+
+ Element *ownerElement;
+
+
+};
+
+
+
+
+
+/*#########################################################################
+## ElementImpl
+#########################################################################*/
+
+/**
+ *
+ */
+class ElementImpl : virtual public Element, public NodeImpl
+{
+public:
+
+ /**
+ *
+ */
+ virtual DOMString getTagName();
+
+ /**
+ *
+ */
+ virtual DOMString getAttribute(const DOMString& name);
+
+ /**
+ *
+ */
+ virtual void setAttribute(const DOMString& name,
+ const DOMString& value)
+ throw(DOMException);
+
+ /**
+ *
+ */
+ virtual void removeAttribute(const DOMString& name)
+ throw(DOMException);
+
+ /**
+ *
+ */
+ virtual Attr *getAttributeNode(const DOMString& name);
+
+ /**
+ *
+ */
+ virtual Attr *setAttributeNode(Attr *newAttr)
+ throw(DOMException);
+
+ /**
+ *
+ */
+ virtual Attr *removeAttributeNode(Attr *oldAttr)
+ throw(DOMException);
+
+ /**
+ *
+ */
+ virtual NodeList getElementsByTagName(const DOMString& name);
+
+ /**
+ *
+ */
+ virtual DOMString getAttributeNS(const DOMString& namespaceURI,
+ const DOMString& localName);
+
+ /**
+ *
+ */
+ virtual void setAttributeNS(const DOMString& namespaceURI,
+ const DOMString& qualifiedName,
+ const DOMString& value)
+ throw(DOMException);
+
+ /**
+ *
+ */
+ virtual void removeAttributeNS(const DOMString& namespaceURI,
+ const DOMString& localName)
+ throw(DOMException);
+
+ /**
+ *
+ */
+ virtual Attr *getAttributeNodeNS(const DOMString& namespaceURI,
+ const DOMString& localName);
+
+ /**
+ *
+ */
+ virtual Attr *setAttributeNodeNS(Attr *newAttr)
+ throw(DOMException);
+
+ /**
+ *
+ */
+ virtual NodeList getElementsByTagNameNS(const DOMString& namespaceURI,
+ const DOMString& localName);
+
+ /**
+ *
+ */
+ virtual bool hasAttribute(const DOMString& name);
+
+ /**
+ *
+ */
+ virtual bool hasAttributeNS(const DOMString& namespaceURI,
+ const DOMString& localName);
+
+ /**
+ *
+ */
+ virtual TypeInfo *getSchemaTypeInto();
+
+
+ /**
+ *
+ */
+ virtual void setIdAttribute(const DOMString &name,
+ bool isId) throw (DOMException);
+
+ /**
+ *
+ */
+ virtual void setIdAttributeNS(const DOMString &namespaceURI,
+ const DOMString &localName,
+ bool isId) throw (DOMException);
+
+ /**
+ *
+ */
+ virtual void setIdAttributeNode(const Attr *idAttr,
+ bool isId) throw (DOMException);
+
+
+
+ //##################
+ //# Non-API methods
+ //##################
+
+
+ /**
+ *
+ */
+ ElementImpl();
+
+ /**
+ *
+ */
+ ElementImpl(DocumentImpl *owner, const DOMString &tagName);
+
+ /**
+ *
+ */
+ ElementImpl(DocumentImpl *owner, const DOMString &namespaceURI, const DOMString &tagName);
+
+ /**
+ *
+ */
+ virtual ~ElementImpl();
+
+ /**
+ *
+ */
+ void normalizeNamespaces();
+
+protected:
+
+friend class DocumentImpl;
+
+ static void getElementsByTagNameRecursive(NodeList &list,
+ const DOMString& name, Element *elem);
+ static void getElementsByTagNameNSRecursive(NodeList &list,
+ const DOMString& namespaceURI, const DOMString& tagName, Element *elem);
+};
+
+
+
+
+
+/*#########################################################################
+## TextImpl
+#########################################################################*/
+
+/**
+ *
+ */
+class TextImpl : virtual public Text, protected CharacterDataImpl
+{
+public:
+
+ /**
+ *
+ */
+ virtual Text *splitText(unsigned long offset)
+ throw(DOMException);
+
+ /**
+ *
+ */
+ virtual bool getIsElementContentWhitespace();
+
+ /**
+ *
+ */
+ virtual DOMString getWholeText();
+
+
+ /**
+ *
+ */
+ virtual Text *replaceWholeText(const DOMString &content)
+ throw(DOMException);
+
+ //##################
+ //# Non-API methods
+ //##################
+
+ /**
+ *
+ */
+ TextImpl();
+
+
+ /**
+ *
+ */
+ TextImpl(DocumentImpl *owner, const DOMString &val);
+
+ /**
+ *
+ */
+ virtual ~TextImpl();
+
+protected:
+
+};
+
+
+
+/*#########################################################################
+## CommentImpl
+#########################################################################*/
+
+/**
+ *
+ */
+class CommentImpl : virtual public Comment, protected CharacterDataImpl
+{
+public:
+
+ //##################
+ //# Non-API methods
+ //##################
+
+ /**
+ *
+ */
+ CommentImpl();
+
+ /**
+ *
+ */
+ CommentImpl(DocumentImpl *owner, const DOMString &theValue);
+
+ /**
+ *
+ */
+ virtual ~CommentImpl();
+};
+
+
+
+/*#########################################################################
+## TypeInfoImpl
+#########################################################################*/
+
+/**
+ *
+ */
+class TypeInfoImpl : public TypeInfo
+{
+public:
+
+ /**
+ *
+ */
+ virtual DOMString getTypeName();
+
+ /**
+ *
+ */
+ virtual DOMString getTypeNamespace();
+
+ /**
+ *
+ */
+ virtual bool isDerivedFrom(const DOMString &typeNamespaceArg,
+ const DOMString &typeNameArg,
+ const DerivationMethod derivationMethod);
+
+
+ //##################
+ //# Non-API methods
+ //##################
+
+
+ /**
+ *
+ */
+ TypeInfoImpl(const DOMString &typeNamespaceArg,
+ const DOMString &typeNameArg,
+ const DerivationMethod derivationMethod);
+
+ /**
+ *
+ */
+ virtual ~TypeInfoImpl();
+
+protected:
+
+ DOMString typeName;
+
+ DOMString typeNamespace;
+
+ unsigned short derivationMethod;
+
+};
+
+
+
+
+/*#########################################################################
+## UserDataHandlerImpl
+#########################################################################*/
+
+/**
+ *
+ */
+class UserDataHandlerImpl : public UserDataHandler
+{
+public:
+
+ /**
+ *
+ */
+ virtual void handle(unsigned short operation,
+ const DOMString &key,
+ const DOMUserData *data,
+ const Node *src,
+ const Node *dst);
+
+ //##################
+ //# Non-API methods
+ //##################
+
+
+protected:
+
+ /**
+ *
+ */
+ UserDataHandlerImpl();
+
+ /**
+ *
+ */
+ virtual ~UserDataHandlerImpl();
+};
+
+
+/*#########################################################################
+## DOMErrorImpl
+#########################################################################*/
+
+/**
+ *
+ */
+class DOMErrorImpl : public DOMError
+{
+public:
+
+ /**
+ *
+ */
+ virtual unsigned short getSeverity();
+
+ /**
+ *
+ */
+ virtual DOMString getMessage();
+
+ /**
+ *
+ */
+ virtual DOMString getType();
+
+ /**
+ *
+ */
+ virtual DOMObject *getRelatedException();
+
+ /**
+ *
+ */
+ virtual DOMObject *getRelatedData();
+
+ /**
+ *
+ */
+ virtual DOMLocator *getLocation();
+
+
+ //##################
+ //# Non-API methods
+ //##################
+
+
+protected:
+
+ /**
+ *
+ */
+ DOMErrorImpl();
+
+ /**
+ *
+ */
+ virtual ~DOMErrorImpl();
+
+ unsigned short severity;
+
+ DOMString message;
+
+ DOMString type;
+
+
+};
+
+
+/*#########################################################################
+## DOMErrorHandlerImpl
+#########################################################################*/
+
+/**
+ *
+ */
+class DOMErrorHandlerImpl : public DOMErrorHandler
+{
+public:
+
+ /**
+ *
+ */
+ virtual bool handleError(const DOMError *error);
+
+
+
+ //##################
+ //# Non-API methods
+ //##################
+
+
+
+protected:
+
+ /**
+ *
+ */
+ DOMErrorHandlerImpl();
+
+ /**
+ *
+ */
+ virtual ~DOMErrorHandlerImpl();
+
+
+};
+
+
+
+/*#########################################################################
+## DOMLocatorImpl
+#########################################################################*/
+
+/**
+ *
+ */
+class DOMLocatorImpl : public DOMLocator
+{
+public:
+
+ /**
+ *
+ */
+ virtual long getLineNumber();
+
+ /**
+ *
+ */
+ virtual long getColumnNumber();
+
+ /**
+ *
+ */
+ virtual long getByteOffset();
+
+ /**
+ *
+ */
+ virtual long getUtf16Offset();
+
+
+ /**
+ *
+ */
+ virtual Node *getRelatedNode();
+
+
+ /**
+ *
+ */
+ virtual DOMString getUri();
+
+
+
+ //##################
+ //# Non-API methods
+ //##################
+
+
+ /**
+ *
+ */
+ DOMLocatorImpl();
+
+ /**
+ *
+ */
+ virtual ~DOMLocatorImpl();
+
+protected:
+
+
+ long lineNumber;
+
+ long columnNumber;
+
+ long byteOffset;
+
+ long utf16Offset;
+
+ Node *relatedNode;
+
+ DOMString uri;
+};
+
+
+/*#########################################################################
+## DOMConfigurationImpl
+#########################################################################*/
+
+/**
+ *
+ */
+class DOMConfigurationImpl : public DOMConfiguration
+{
+public:
+
+ /**
+ *
+ */
+ virtual void setParameter(const DOMString &name,
+ const DOMUserData *value) throw (DOMException);
+
+ /**
+ *
+ */
+ virtual DOMUserData *getParameter(const DOMString &name)
+ throw (DOMException);
+
+ /**
+ *
+ */
+ virtual bool canSetParameter(const DOMString &name,
+ const DOMUserData *data);
+
+ /**
+ *
+ */
+ virtual DOMStringList *getParameterNames();
+
+
+ //##################
+ //# Non-API methods
+ //##################
+
+ /**
+ *
+ */
+ DOMConfigurationImpl();
+
+ /**
+ *
+ */
+ virtual ~DOMConfigurationImpl();
+
+protected:
+
+};
+
+
+
+
+
+
+/*#########################################################################
+## CDATASectionImpl
+#########################################################################*/
+/**
+ *
+ */
+class CDATASectionImpl : public CDATASection, public TextImpl
+{
+public:
+
+ //##################
+ //# Non-API methods
+ //##################
+
+ /**
+ *
+ */
+ CDATASectionImpl();
+
+
+ /**
+ *
+ */
+ CDATASectionImpl(DocumentImpl *owner, const DOMString &value);
+
+ /**
+ *
+ */
+ virtual ~CDATASectionImpl();
+
+};
+
+
+
+
+/*#########################################################################
+## DocumentTypeImpl
+#########################################################################*/
+
+/**
+ *
+ */
+class DocumentTypeImpl : public DocumentType, public NodeImpl
+{
+public:
+
+ /**
+ *
+ */
+ virtual DOMString getName();
+
+ /**
+ *
+ */
+ virtual NamedNodeMap getEntities();
+
+ /**
+ *
+ */
+ virtual NamedNodeMap getNotations();
+
+ /**
+ *
+ */
+ virtual DOMString getPublicId();
+
+ /**
+ *
+ */
+ virtual DOMString getSystemId();
+
+ /**
+ *
+ */
+ virtual DOMString getInternalSubset();
+
+ //##################
+ //# Non-API methods
+ //##################
+
+ /**
+ *
+ */
+ DocumentTypeImpl();
+
+ /**
+ *
+ */
+ DocumentTypeImpl(const DOMString& name,
+ const DOMString& publicId,
+ const DOMString& systemId);
+ /**
+ *
+ */
+ virtual ~DocumentTypeImpl();
+
+
+protected:
+ DOMString name;
+ DOMString publicId;
+ DOMString systemId;
+
+ NamedNodeMap entities;
+ NamedNodeMap notations;
+
+};
+
+
+
+
+
+/*#########################################################################
+## NotationImpl
+#########################################################################*/
+
+/**
+ *
+ */
+class NotationImpl : public Notation, public NodeImpl
+{
+public:
+
+ /**
+ *
+ */
+ virtual DOMString getPublicId();
+
+ /**
+ *
+ */
+ virtual DOMString getSystemId();
+
+
+ //##################
+ //# Non-API methods
+ //##################
+
+ /**
+ *
+ */
+ NotationImpl();
+
+ /**
+ *
+ */
+ NotationImpl(DocumentImpl *owner);
+
+ /**
+ *
+ */
+ virtual ~NotationImpl();
+
+
+protected:
+
+
+
+ DOMString publicId;
+
+ DOMString systemId;
+};
+
+
+
+
+
+
+/*#########################################################################
+## EntityImpl
+#########################################################################*/
+
+/**
+ *
+ */
+class EntityImpl : public Entity, public NodeImpl
+{
+public:
+
+ /**
+ *
+ */
+ virtual DOMString getPublicId();
+
+ /**
+ *
+ */
+ virtual DOMString getSystemId();
+
+ /**
+ *
+ */
+ virtual DOMString getNotationName();
+
+ /**
+ *
+ */
+ virtual DOMString getInputEncoding();
+
+ /**
+ *
+ */
+ virtual DOMString getXmlEncoding();
+
+ /**
+ *
+ */
+ virtual DOMString getXmlVersion();
+
+
+ //##################
+ //# Non-API methods
+ //##################
+
+ /**
+ *
+ */
+ EntityImpl();
+
+
+ /**
+ *
+ */
+ EntityImpl(DocumentImpl *owner);
+
+ /**
+ *
+ */
+ virtual ~EntityImpl();
+
+protected:
+
+
+
+ DOMString publicId;
+
+ DOMString systemId;
+
+ DOMString notationName;
+
+ DOMString inputEncoding;
+
+ DOMString xmlEncoding;
+
+ DOMString xmlVersion;
+
+};
+
+
+
+
+
+/*#########################################################################
+## EntityReferenceImpl
+#########################################################################*/
+/**
+ *
+ */
+class EntityReferenceImpl : public EntityReference, public NodeImpl
+{
+public:
+
+ //##################
+ //# Non-API methods
+ //##################
+
+ /**
+ *
+ */
+ EntityReferenceImpl();
+
+
+ /**
+ *
+ */
+ EntityReferenceImpl(DocumentImpl *owner, const DOMString &theName);
+
+ /**
+ *
+ */
+ virtual ~EntityReferenceImpl();
+
+};
+
+
+
+
+
+/*#########################################################################
+## ProcessingInstructionImpl
+#########################################################################*/
+
+/**
+ *
+ */
+class ProcessingInstructionImpl : public ProcessingInstruction, public NodeImpl
+{
+public:
+
+ /**
+ *
+ */
+ virtual DOMString getTarget();
+
+ /**
+ *
+ */
+ virtual DOMString getData();
+
+ /**
+ *
+ */
+ virtual void setData(const DOMString& val) throw(DOMException);
+
+
+ //##################
+ //# Non-API methods
+ //##################
+
+
+ /**
+ *
+ */
+ ProcessingInstructionImpl();
+
+
+ /**
+ *
+ */
+ ProcessingInstructionImpl(DocumentImpl *owner,
+ const DOMString &target,
+ const DOMString &data);
+
+ /**
+ *
+ */
+ virtual ~ProcessingInstructionImpl();
+
+
+protected:
+
+
+ //'target' is nodeName
+
+ //'data' is nodeValue
+
+
+};
+
+
+
+
+
+/*#########################################################################
+## DocumentFragmentImpl
+#########################################################################*/
+/**
+ *
+ */
+class DocumentFragmentImpl : public DocumentFragment, public NodeImpl
+{
+
+public:
+
+ //##################
+ //# Non-API methods
+ //##################
+
+ /**
+ *
+ */
+ DocumentFragmentImpl();
+
+ /**
+ *
+ */
+ DocumentFragmentImpl(DocumentImpl *owner);
+
+ /**
+ *
+ */
+ virtual ~DocumentFragmentImpl();
+
+};
+
+
+
+
+
+
+/*#########################################################################
+## DocumentImpl
+#########################################################################*/
+
+/**
+ *
+ */
+class DocumentImpl : virtual public Document, public NodeImpl
+{
+public:
+
+ /**
+ *
+ */
+ virtual DocumentType *getDoctype();
+
+ /**
+ *
+ */
+ virtual DOMImplementation *getImplementation();
+
+ /**
+ *
+ */
+ virtual Element *getDocumentElement();
+
+ /**
+ *
+ */
+ virtual Element *createElement(const DOMString& tagName)
+ throw(DOMException);
+
+ /**
+ *
+ */
+ virtual DocumentFragment *createDocumentFragment();
+
+ /**
+ *
+ */
+ virtual Text *createTextNode(const DOMString& data);
+
+ /**
+ *
+ */
+ virtual Comment *createComment(const DOMString& data);
+
+ /**
+ *
+ */
+ virtual CDATASection *createCDATASection(const DOMString& data)
+ throw(DOMException);
+
+ /**
+ *
+ */
+ virtual ProcessingInstruction *createProcessingInstruction(const DOMString& target,
+ const DOMString& data)
+ throw(DOMException);
+
+ /**
+ *
+ */
+ virtual Attr *createAttribute(const DOMString& name)
+ throw(DOMException);
+
+ /**
+ *
+ */
+ virtual EntityReference *createEntityReference(const DOMString& name)
+ throw(DOMException);
+
+ /**
+ *
+ */
+ virtual NodeList getElementsByTagName(const DOMString& tagname);
+
+
+ /**
+ *
+ */
+ virtual Node *importNode(const Node *importedNode,
+ bool deep)
+ throw(DOMException);
+
+ /**
+ *
+ */
+ virtual Element *createElementNS(const DOMString& namespaceURI,
+ const DOMString& qualifiedName)
+ throw(DOMException);
+
+ /**
+ *
+ */
+ virtual Attr *createAttributeNS(const DOMString& namespaceURI,
+ const DOMString& qualifiedName)
+ throw(DOMException);
+
+ /**
+ *
+ */
+ virtual NodeList getElementsByTagNameNS(const DOMString& namespaceURI,
+ const DOMString& localName);
+
+ /**
+ *
+ */
+ virtual Element *getElementById(const DOMString& elementId);
+
+
+ /**
+ *
+ */
+ virtual DOMString getInputEncoding();
+
+
+ /**
+ *
+ */
+ virtual DOMString getXmlEncoding();
+
+ /**
+ *
+ */
+ virtual bool getXmlStandalone();
+
+ /**
+ *
+ */
+ virtual void setXmlStandalone(bool val) throw (DOMException);
+
+ /**
+ *
+ */
+ virtual DOMString getXmlVersion();
+
+ /**
+ *
+ */
+ virtual void setXmlVersion(const DOMString &version) throw (DOMException);
+
+ /**
+ *
+ */
+ virtual bool getStrictErrorChecking();
+
+ /**
+ *
+ */
+ virtual void setStrictErrorChecking(bool val);
+
+
+ /**
+ *
+ */
+ virtual DOMString getDocumentURI();
+
+ /**
+ *
+ */
+ virtual void setDocumentURI(const DOMString &uri);
+
+ /**
+ *
+ */
+ virtual Node *adoptNode(const Node *source) throw (DOMException);
+
+ /**
+ *
+ */
+ virtual DOMConfiguration *getDomConfig();
+
+ /**
+ *
+ */
+ virtual void normalizeDocument();
+
+ /**
+ *
+ */
+ virtual Node *renameNode(const Node *n,
+ const DOMString &name,
+ const DOMString &qualifiedName)
+ throw (DOMException);
+
+
+ //##################
+ //# Non-API methods
+ //##################
+
+ DocumentImpl(const DOMImplementation *domImpl,
+ const DOMString &namespaceURI,
+ const DOMString &qualifiedName,
+ const DocumentType *doctype);
+
+ virtual ~DocumentImpl();
+
+
+ DOMString *stringCache(const DOMString &val);
+
+ int namespaceIndex;
+
+protected:
+
+ DOMImplementation *parent;
+
+ DOMString *documentURI;
+
+ DOMString qualifiedName;
+
+ DocumentType *doctype;
+
+ ElementImpl *documentElement;
+
+ class NamedElementItem
+ {
+ public:
+ NamedElementItem()
+ {
+ next = NULL;
+ }
+ NamedElementItem(const DOMString &nameArg, Element *elemArg)
+ {
+ next = NULL;
+ name = nameArg;
+ elem = elemArg;
+ }
+ ~NamedElementItem()
+ {
+ if (next)
+ delete next;
+ }
+ NamedElementItem *next;
+ DOMString name;
+ Element *elem;
+ };
+
+ NamedElementItem elementsById;
+
+
+ DOMString xmlEncoding;
+
+ DOMString inputEncoding;
+
+ DOMString xmlVersion;
+
+ bool xmlStandalone;
+
+ bool strictErrorChecking;
+
+ DOMConfiguration *domConfig;
+
+ NamedNodeMap namespaceURIs;
+
+
+};
+
+
+
+
+
+
+
+
+
+
+
+} //namespace dom
+} //namespace w3c
+} //namespace org
+
+
+#endif // __DOMIMPL_H__
+
+
+/*#########################################################################
+## E N D O F F I L E
+#########################################################################*/
+
+
+
+