*/\r
\r
/**\r
- * @file AbstractElementProxy.h\r
+ * @file xmltooling/AbstractElementProxy.h\r
* \r
- * An abstract implementation of an ElementProxy \r
+ * AbstractXMLObject mixin that implements an open content model \r
*/\r
\r
#ifndef __xmltooling_abseleproxy_h__\r
#define __xmltooling_abseleproxy_h__\r
\r
-#include <xmltooling/AbstractXMLObject.h>\r
+#include <xmltooling/AbstractComplexElement.h>\r
#include <xmltooling/ElementProxy.h>\r
\r
#if defined (_MSC_VER)\r
namespace xmltooling {\r
\r
/**\r
- * An abstract implementation of an ExtensibleXMLObject.\r
+ * AbstractXMLObject mixin that layers ElementProxy on top of a complex element.\r
+ * Inherit from this class to implement complex content\r
+ * and expose the underlying child collection in read/write mode.\r
*/\r
- class XMLTOOL_API AbstractElementProxy : public virtual ElementProxy, public virtual AbstractXMLObject\r
+ class XMLTOOL_API AbstractElementProxy : public virtual ElementProxy, public AbstractComplexElement\r
{\r
public:\r
virtual ~AbstractElementProxy() {}\r
\r
- virtual const XMLCh* getTextContent() const {\r
- return m_value;\r
+ virtual ListOf(XMLObject) getXMLObjects() {\r
+ return ListOf(XMLObject)(this,m_children,NULL,m_children.end());\r
}\r
- \r
- virtual void setTextContent(const XMLCh* value);\r
- \r
- virtual ListOf(XMLObject) getXMLObjects();\r
\r
- protected:\r
- AbstractElementProxy() : m_value(NULL) {}\r
+ virtual const std::list<XMLObject*>& getXMLObjects() const {\r
+ return m_children;\r
+ }\r
+\r
+ protected:\r
+ AbstractElementProxy() {}\r
\r
/** Copy constructor. */\r
- AbstractElementProxy(const AbstractElementProxy& src)\r
- : AbstractXMLObject(src), m_value(XMLString::replicate(src.m_value)) {}\r
-\r
- private:\r
- XMLCh* m_value;\r
+ AbstractElementProxy(const AbstractElementProxy& src) : AbstractXMLObject(src), AbstractComplexElement(src) {}\r
};\r
\r
};\r