00001
00002
00003 #ifndef MiX_TEXT_H_
00004 #define MiX_TEXT_H_
00005
00006 #include "classes.h"
00007 #include "misc.h"
00008 #include "XMLString.h"
00009 #include "NodeList.h"
00010 #include "extern/noncopyable.hpp"
00011
00012 namespace MiX{
00013 template <class charT,class char_traits,class xml_traits>
00014 class Text : boost::noncopyable,
00015 public Value<charT,char_traits,xml_traits>{
00016 public:
00017 MiX_Template_Typedef(charT,char_traits,xml_traits);
00018 typedef Text<charT,char_traits,xml_traits> this_type;
00019 typedef typename nodelist_type::iterator nodelist_iter;
00020 protected:
00021 const static typename NodeList<charT,char_traits,xml_traits>::iterator dmy_it;
00028 Text(const string_type& val) : Value<charT,char_traits,xml_traits>(val){ };
00029 public:
00031 virtual ~Text()throw(){ };
00033 virtual NodeType getType()const{ return Node_Text; };
00039 static NodeType type(){ return Node_Text; };
00046 virtual string_type toString(bool indent=false,const string_type& idt=xml_traits::indent(),int indent_off=0)const;
00053 node_type& clone(nodecontainer_type& parent,const nodelist_iter& it = dmy_it) const
00054 { return create(getValue(),dynamic_cast<element_type&>(parent),it); }
00055
00063 static this_type& create(const string_type& str,element_type& parent,const typename nodelist_type::iterator& it = dmy_it);
00064
00065 friend class DOM_Parser<charT,char_traits,xml_traits>;
00066 };
00067 }
00068
00069 #ifndef MiX_TEXT_CPP_
00070 #include "Text.cpp"
00071 #endif
00072
00073 #endif