X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;f=xmltooling%2FAbstractElementProxy.h;h=b8bd05f09b7b15626672d4052585511dcdc53436;hb=c47d9a28b514e071b6fbb1dfce4b5f258d26a67f;hp=982941096959a1d8180d6062c5bda8b2f86c137f;hpb=a039baceeda19f0e5c3269332a668763c0889e90;p=shibboleth%2Fcpp-xmltooling.git diff --git a/xmltooling/AbstractElementProxy.h b/xmltooling/AbstractElementProxy.h index 9829410..b8bd05f 100644 --- a/xmltooling/AbstractElementProxy.h +++ b/xmltooling/AbstractElementProxy.h @@ -17,13 +17,14 @@ /** * @file AbstractElementProxy.h * - * An abstract implementation of an ElementProxy + * AbstractXMLObject mixin that implements an open content model */ #ifndef __xmltooling_abseleproxy_h__ #define __xmltooling_abseleproxy_h__ -#include +#include +#include #include #if defined (_MSC_VER) @@ -34,30 +35,30 @@ namespace xmltooling { /** - * An abstract implementation of an ExtensibleXMLObject. + * AbstractXMLObject mixin that implements an open content model. + * Inherit from this class to merge both simple and complex content + * and expose the underlying child collection in read/write mode. */ - class XMLTOOL_API AbstractElementProxy : public virtual ElementProxy, public virtual AbstractXMLObject + class XMLTOOL_API AbstractElementProxy + : public virtual ElementProxy, public AbstractSimpleElement, public AbstractComplexElement { public: virtual ~AbstractElementProxy() {} - virtual const XMLCh* getTextContent() const { - return m_value; + virtual ListOf(XMLObject) getXMLObjects() { + return ListOf(XMLObject)(this,m_children,NULL,m_children.end()); } - - virtual void setTextContent(const XMLCh* value); - - virtual ListOf(XMLObject) getXMLObjects(); - protected: - AbstractElementProxy() : m_value(NULL) {} + virtual const std::list& getXMLObjects() const { + return m_children; + } + + protected: + AbstractElementProxy() {} /** Copy constructor. */ AbstractElementProxy(const AbstractElementProxy& src) - : AbstractXMLObject(src), m_value(XMLString::replicate(src.m_value)) {} - - private: - XMLCh* m_value; + : AbstractXMLObject(src), AbstractSimpleElement(src) {} }; };