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

DefaultXMLTraits.h

解説を見る。
00001 // -*- mode: c++ -*-
00002 #ifndef MiX_DEFAULTXMLTRAITS_H_
00003 #define MiX_DEFAULTXMLTRAITS_H_
00004 
00005 #include <string>
00006 #include <cctype>
00007 #include "config.h"
00008 
00009 namespace MiX{
00010 
00011   template <class charT,class char_traits>
00012   class DefaultXMLTraits{
00013   public:
00014     typedef std::basic_string<charT,char_traits> basic_string_type;
00015   private:
00016     static basic_string_type makeString(const char* szSrc);
00017 
00018   public:
00020     static charT null(){ return static_cast<charT>('\0'); }
00022     static charT cr(){ return static_cast<charT>('\r'); }
00024     static charT lf(){ return static_cast<charT>('\n'); }
00026     static charT sp(){ return static_cast<charT>(' '); }
00028     static charT tab(){ return static_cast<charT>('\t'); }
00029 
00031     static charT lt(){ return static_cast<charT>('<'); }
00033     static charT eq(){ return static_cast<charT>('='); }
00035     static charT gt(){ return static_cast<charT>('>'); }
00036 
00038     static charT slash(){ return static_cast<charT>('/'); }
00040     static charT hyphen(){ return static_cast<charT>('-'); }
00042     static charT colon() { return static_cast<charT>(':'); }
00044     static charT semicolon(){ return static_cast<charT>(';'); }
00045 
00047     static charT exclamation(){ return static_cast<charT>('!'); }
00049     static charT question(){ return static_cast<charT>('?'); }
00051     static charT amp(){ return static_cast<charT>('&'); }
00052 
00054     static charT dblquote() { return static_cast<charT>('\"'); }
00056     static charT quote() { return static_cast<charT>('\''); }
00057 
00059     static charT sharp() { return static_cast<charT>('#'); }
00060 
00062     static charT lsb() { return static_cast<charT>('['); }
00063 
00065     static charT rsb() { return static_cast<charT>(']'); }
00066 
00068     static charT atmark() { return static_cast<charT>('@'); }
00069 
00070     //文字列処理
00071     //XML文書中で使われる文字列を返す。
00073     static basic_string_type xml(){ 
00074       return makeString("xml");
00075     }
00077     static basic_string_type cdata(){
00078       return makeString("CDATA");
00079     }
00081     static basic_string_type str_lt(){
00082       return makeString("lt");
00083     }
00085     static basic_string_type str_gt(){
00086       return makeString("gt");
00087     }
00089     static basic_string_type str_amp(){
00090       return makeString("amp");
00091     }
00093     static basic_string_type str_quot(){
00094       return makeString("quot");
00095     }
00097     static basic_string_type str_apos(){
00098       return makeString("apos");
00099     }
00100 
00102     static basic_string_type str_xmlns(){ 
00103       return makeString("xmlns");
00104     }
00105     
00107     static basic_string_type indent(){
00108       return makeString("\t");
00109     }
00110 
00112     static basic_string_type crlf(){ return makeString("\n"); }
00113 
00122     static int ci_compare(const charT* s1,const charT* s2,size_t n){
00123       for(size_t i=0;i<n;i++){
00124         int c1,c2;
00125         c1 = std::tolower(static_cast<int>(s1[i]));
00126         c2 = std::tolower(static_cast<int>(s2[i]));
00127         if(c1>c2) return 1;
00128         if(c1<c2) return -1;
00129       }
00130       return 0;
00131     }
00132 
00134     static bool str2char( const charT *str, charT &ch )
00135     {
00136       ch = 0;
00137       if( *str==static_cast<charT>('x') ) {
00138         ++str;
00139         for( ; *str ; ++str ) {
00140           int i;
00141           ch *= 16;
00142           if( static_cast<charT>('0')<=*str && *str<=static_cast<charT>('9') )
00143             i = *str - static_cast<charT>('0');
00144           else if( static_cast<charT>('A')<=*str && 
00145                    *str<=static_cast<charT>('F') )
00146             i = *str - static_cast<charT>('A');
00147           else if( static_cast<charT>('a')<=*str && 
00148                    *str<=static_cast<charT>('f') )
00149             i = *str - static_cast<charT>('a');
00150           else return false;
00151           ch += i;
00152         }
00153       } else { // 10
00154         //++str;
00155         for( ; *str ; ++str ) {
00156           if(!(static_cast<charT>('0')<=*str && *str<=static_cast<charT>('9')))
00157             return false;
00158           ch = ch*10 + (*str - static_cast<charT>('0'));
00159         }
00160       }
00161       return true;
00162     }
00163     
00164   };
00165 }
00166 
00167 #ifndef MiX_DEFAULTXMLTRAITS_CPP_
00168 #include "DefaultXMLTraits.cpp"
00169 #endif
00170 
00171 #endif

MiXに対してThu Sep 4 05:11:11 2003に生成されました。 doxygen1.2.18