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 NodeContainer<charT,char_traits,xml_traits> nodecontainer_type;
00020 typedef typename nodelist_type::iterator nodelist_iter;
00021 protected:
00022 const static typename NodeList<charT,char_traits,xml_traits>::iterator dmy_it;
00029 Text(const string_type& val) : Value<charT,char_traits,xml_traits>(val){ };
00030 public:
00032 virtual ~Text()throw(){ };
00034 virtual NodeType getType()const{ return Node_Text; };
00040 static NodeType type(){ return Node_Text; };
00047 virtual string_type toString(bool indent=false,int indent_off=0)const;
00054 node_type& clone(nodecontainer_type& parent,const nodelist_iter& it = dmy_it) const
00055 { return create(getValue(),dynamic_cast<element_type&>(parent),it); }
00056
00064 static this_type& create(const string_type& str,element_type& parent,const typename nodelist_type::iterator& it = dmy_it);
00065
00066 friend class DOM_Parser<charT,char_traits,xml_traits>;
00067 };
00068 }
00069
00070 #ifndef MiX_TEXT_CPP_
00071 #include "Text.cpp"
00072 #endif
00073
00074 #endif