#if !defined(__xmltooling_abstractxmlobj_h__)\r
#define __xmltooling_abstractxmlobj_h__\r
\r
+#include <algorithm>\r
#include <xmltooling/XMLObject.h>\r
\r
#if defined (_MSC_VER)\r
public:\r
virtual ~AbstractXMLObject() {\r
delete m_typeQname;\r
+ std::for_each(m_children.begin(), m_children.end(), cleanup<XMLObject>());\r
}\r
\r
/**\r
void setParent(XMLObject* parent) {\r
m_parent = parent;\r
}\r
- \r
+\r
+ /**\r
+ * @see XMLObject::hasChildren()\r
+ */\r
+ bool hasChildren() const {\r
+ return !m_children.empty();\r
+ }\r
+\r
+ /**\r
+ * @see XMLObject::getOrderedChildren()\r
+ */\r
+ const std::list<XMLObject*>& getOrderedChildren() const {\r
+ return m_children;\r
+ }\r
+\r
protected:\r
/**\r
* Constructor\r
: m_elementQname(namespaceURI,elementLocalName, namespacePrefix), m_typeQname(NULL), m_parent(NULL) {\r
addNamespace(Namespace(namespaceURI, namespacePrefix));\r
}\r
+\r
+ /**\r
+ * Underlying list of child objects.\r
+ * Manages the lifetime of the children.\r
+ */\r
+ std::list<XMLObject*> m_children;\r
\r
private:\r
XMLObject* m_parent;\r