Attribute.h Source File

メインページ 名前空間一覧 クラス階層 構成 ファイル一覧 名前空間メンバ 構成メンバ ファイルメンバ

# Attribute.h

解説を見る。

    00001 // -*- mode: c++ -*-
    00002 #ifndef MiX_ATTRIBUTE_H_
    00003 #define MiX_ATTRIBUTE_H_
    00004
    00005 #include "classes.h"
    00006 #include "misc.h"
    00007 #include "XMLString.h"
    00008 #include "NamedNode.h"
    00009 #include "Value.h"
    00010 #include "extern/noncopyable.hpp"
    00011
    00012 namespace MiX{
    00013
    00014   template <class charT,class char_traits,class xml_traits>
    00015   class Attribute : boost::noncopyable,
    00016                     public Value<charT,char_traits,xml_traits> ,
    00017                     public NamedNode<charT,char_traits,xml_traits>{
    00018   public:
    00019     MiX_Template_Typedef(charT,char_traits,xml_traits);
    00020     typedef Attribute<charT,char_traits,xml_traits> this_type;
    00021     typedef typename nodelist_type::iterator nodelist_iter;
    00022   private:
    00023     const static typename nodelist_type::iterator dmy_it;
    00024   protected:
    00031     Attribute(const string_type& name,const string_type ns,const string_type& val)
    00032       : Value<charT,char_traits,xml_traits>(val),
    00033         NamedNode<charT,char_traits,xml_traits>(name,ns){ };
    00034     Attribute(const string_type& name,const string_type& val)
    00035       : Value<charT,char_traits,xml_traits>(val),
    00036         NamedNode<charT,char_traits,xml_traits>(name){ };
    00037   public:
    00039     virtual ~Attribute()throw() { };
    00041     virtual NodeType getType()const { return Node_Attribute; };
    00047     static NodeType type(){ return Node_Attribute; };
    00048
    00049     string_type getFullName() const;
    00055     virtual string_type toString(bool dmy=false,int dmy2=0)const;
    00056
    00062     node_type& clone(nodecontainer_type& parent,const nodelist_iter& it=dmy_it) const
    00063       { return create(getName(),getURL(),getValue(),parent); };
    00064
    00072     static this_type& create(const string_type& key,const string_type& val,nodecontainer_type& parent)
    00073       { this_type::create(key,string_type(),val,parent); }
    00082     static this_type& create(const string_type& key,const string_type& ns,const string_type& val,nodecontainer_type& parent);
    00083
    00084     friend class DOM_Parser<charT,char_traits,xml_traits>;
    00085   };
    00086 }
    00087
    00088 #ifndef MiX_ATTRIBUTE_CPP_
    00089 #include "Attribute.cpp"
    00090 #endif
    00091
    00092 #endif