00001
00002
00003 #ifndef MIX_NODECONTAINER_H_
00004 #define MIX_NODECONTAINER_H_
00005
00006 #include "NodeList.h"
00007 #include "Node.h"
00008
00009 namespace MiX{
00015 template <class charT,class traitsT>
00016 class NodeContainer : virtual public Node<charT,traitsT>{
00017 public:
00018 MiX_Template_Typedef(charT,traitsT);
00019 typedef NodeContainer<charT,traitsT> this_type;
00020 protected:
00021 NodeList<charT,traitsT> children_;
00022 void addChild(node_type* node);
00023 protected:
00025 NodeContainer() : node_type() { };
00031 NodeContainer(const this_type& src){ };
00032 public:
00034 virtual ~NodeContainer() throw();
00036 nodelist_type& getChildren(){ return children_; };
00038 const nodelist_type& getChildren()const{ return children_; };
00040 bool hasAttribute(const string_type& n);
00042 element_type& getElement(const string_type& name,int index);
00044 attribute_type& getAttribute(const string_type& nm);
00050 nodelist_type getElementsByTagName(const string_type& tagname);
00051
00052
00053 #ifdef MiX_BACKWARD_COMPATIBILITY
00054
00055 nodelist_type& getChilds(){
00056 return getChildren();
00057 };
00059 const nodelist_type& getChilds()const{
00060 return getChildren();
00061 }
00062 #endif
00063
00064 friend class DOM_Parser<charT,traitsT>;
00065 };
00066 }
00067
00068 #ifndef MIX_NODECONTAINER_CPP_
00069 #include "NodeContainer.cpp"
00070 #endif
00071
00072 #endif