00001
00002
00003 #ifndef MIX_NODE_H_
00004 #define MIX_NODE_H_
00005
00006 #include "classes.h"
00007 #include "misc.h"
00008 #include "DefaultXMLTraits.h"
00009
00010 namespace MiX{
00016 template <class Char,class Traits,class XMLTraits>
00017 class Node{
00018 public:
00019 MiX_Template_Typedef(Char,Traits,XMLTraits);
00020 typedef NamedNode<Char,Traits,XMLTraits> this_type;
00021 typedef NodeContainer<Char,Traits,XMLTraits> nodecontainer_type;
00022 private:
00023 NodeContainer<Char,Traits,XMLTraits>* parent_;
00024 protected:
00030 Node(const this_type& src){ };
00032 Node(){ parent_ = 0; };
00034 void setParent(nodecontainer_type& parent){ parent_ = &parent; };
00035 public:
00037 virtual ~Node()throw();
00039 virtual void destroy()throw() { delete this; } ;
00041 const nodecontainer_type& getParent() const;
00043 nodecontainer_type& getParent();
00045 virtual NodeType getType() const = 0;
00047 virtual string_type toString(bool indent=false,int indent_off=0)const = 0;
00048
00049 friend class DOM_Parser<Char,Traits,XMLTraits>;
00050 friend class NodeContainer<Char,Traits,XMLTraits>;
00051 };
00052 }
00053
00054 #ifndef MIX_NODE_CPP_
00055 #include "Node.cpp"
00056 #endif
00057
00058 #endif