Multi-line svn commit, see body.
[shibboleth/cpp-xmltooling.git] / xmltooling / AbstractSimpleElement.h
index 853da26..86e0e80 100644 (file)
@@ -15,7 +15,7 @@
  */\r
 \r
 /**\r
- * @file AbstractSimpleElement.h\r
+ * @file xmltooling/AbstractSimpleElement.h\r
  * \r
  * AbstractXMLObject mixin that implements a simple string-based content model \r
  */\r
@@ -24,7 +24,6 @@
 #define __xmltooling_abssimpleel_h__\r
 \r
 #include <xmltooling/AbstractXMLObject.h>\r
-#include <xmltooling/SimpleElement.h>\r
 \r
 #if defined (_MSC_VER)\r
     #pragma warning( push )\r
@@ -37,18 +36,30 @@ namespace xmltooling {
      * AbstractXMLObject mixin that implements a simple string-based content model.\r
      * Inherit from this class to support string-based element content.\r
      */\r
-    class XMLTOOL_API AbstractSimpleElement : public virtual SimpleElement, public virtual AbstractXMLObject\r
+    class XMLTOOL_API AbstractSimpleElement : public virtual AbstractXMLObject\r
     {\r
     public:\r
         virtual ~AbstractSimpleElement() {\r
             XMLString::release(&m_value);\r
         }\r
         \r
-        virtual const XMLCh* getTextContent() const {\r
-            return m_value;\r
+        bool hasChildren() const {\r
+            return false;\r
+        }\r
+\r
+        const std::list<XMLObject*>& getOrderedChildren() const {\r
+            return m_no_children;\r
+        }\r
+\r
+        void removeChild(XMLObject* child);\r
+\r
+        virtual const XMLCh* getTextContent(unsigned int position=0) const {\r
+            return (position==0) ? m_value : NULL;\r
         }\r
         \r
-        virtual void setTextContent(const XMLCh* value) {\r
+        virtual void setTextContent(const XMLCh* value, unsigned int position=0) {\r
+            if (position > 0)\r
+                throw XMLObjectException("Cannot set text content in simple element at position > 0.");\r
             m_value=prepareForAssignment(m_value,value);\r
         }\r
         \r
@@ -61,6 +72,8 @@ namespace xmltooling {
 \r
     private:\r
         XMLCh* m_value;\r
+\r
+        static std::list<XMLObject*> m_no_children;\r
     };\r
     \r
 };\r