Merged marshalling/unmarshalling methods into core interface.
[shibboleth/cpp-xmltooling.git] / xmltooling / AbstractDOMCachingXMLObject.h
index 501f039..70f7890 100644 (file)
@@ -37,7 +37,7 @@ namespace xmltooling {
      * Extension of AbstractXMLObject that implements a DOMCachingXMLObject.\r
      * This is the primary base class for XMLObject implementation classes to use.\r
      */\r
-    class XMLTOOL_API AbstractDOMCachingXMLObject : public AbstractXMLObject, public DOMCachingXMLObject\r
+    class XMLTOOL_API AbstractDOMCachingXMLObject : public AbstractXMLObject, public virtual DOMCachingXMLObject\r
     {\r
     public:\r
         virtual ~AbstractDOMCachingXMLObject();\r
@@ -52,12 +52,12 @@ namespace xmltooling {
         /**\r
          * @see DOMCachingXMLObject::setDOM()\r
          */\r
-        void setDOM(DOMElement* dom, bool bindDocument=false);\r
+        void setDOM(DOMElement* dom, bool bindDocument=false) const;\r
         \r
         /**\r
          * @see DOMCachingXMLObject::setDocument()\r
          */\r
-        void setDocument(DOMDocument* doc) {\r
+        void setDocument(DOMDocument* doc) const {\r
             if (m_document)\r
                 m_document->release();\r
             m_document=doc;\r
@@ -66,22 +66,22 @@ namespace xmltooling {
         /**\r
          * @see DOMCachingXMLObject::releaseDOM()\r
          */\r
-        virtual void releaseDOM();\r
+        virtual void releaseDOM() const;\r
         \r
         /**\r
          * @see DOMCachingXMLObject::releaseParentDOM()\r
          */\r
-        virtual void releaseParentDOM(bool propagateRelease=true);\r
+        virtual void releaseParentDOM(bool propagateRelease=true) const;\r
         \r
         /**\r
          * @see DOMCachingXMLObject::releaseChildrenDOM()\r
          */\r
-        virtual void releaseChildrenDOM(bool propagateRelease=true);\r
+        virtual void releaseChildrenDOM(bool propagateRelease=true) const;\r
     \r
         /**\r
          * A convenience method that is equal to calling releaseDOM() then releaseParentDOM(true).\r
          */\r
-        void releaseThisandParentDOM() {\r
+        void releaseThisandParentDOM() const {\r
             if (m_dom) {\r
                 releaseDOM();\r
                 releaseParentDOM(true);\r
@@ -91,7 +91,7 @@ namespace xmltooling {
         /**\r
          * A convenience method that is equal to calling releaseChildrenDOM(true) then releaseDOM().\r
          */\r
-        void releaseThisAndChildrenDOM() {\r
+        void releaseThisAndChildrenDOM() const {\r
             if (m_dom) {\r
                 releaseChildrenDOM(true);\r
                 releaseDOM();\r
@@ -111,8 +111,9 @@ namespace xmltooling {
          * @param elementLocalName the local name of the XML element this Object represents\r
          * @param namespacePrefix the namespace prefix to use\r
          */\r
-        AbstractDOMCachingXMLObject(const XMLCh* namespaceURI=NULL, const XMLCh* elementLocalName=NULL, const XMLCh* namespacePrefix=NULL)\r
-            : AbstractXMLObject(namespaceURI,elementLocalName, namespacePrefix), m_dom(NULL), m_document(NULL) {}\r
+        AbstractDOMCachingXMLObject(\r
+            const XMLCh* namespaceURI=NULL, const XMLCh* elementLocalName=NULL, const XMLCh* namespacePrefix=NULL\r
+            ) : AbstractXMLObject(namespaceURI,elementLocalName, namespacePrefix), m_dom(NULL), m_document(NULL) {}\r
 \r
         /**\r
          * If a DOM representation exists, this clones it into a new document.\r
@@ -160,8 +161,8 @@ namespace xmltooling {
         XMLObject* prepareForAssignment(XMLObject* oldValue, XMLObject* newValue);\r
 \r
     private:\r
-        DOMElement* m_dom;\r
-        DOMDocument* m_document;\r
+        mutable DOMElement* m_dom;\r
+        mutable DOMDocument* m_document;\r
     };\r
     \r
 };\r