00001
00002 #ifndef MiX_DEFAULTXMLTRAITS_H_
00003 #define MiX_DEFAULTXMLTRAITS_H_
00004
00005
00006
00007
00008
00009
00010 #include <string>
00011 #include "config.h"
00012
00013 namespace MiX{
00014
00015 template <class charT,class char_traits>
00016 class DefaultXMLTraits{
00017 public:
00018 typedef std::basic_string<charT,char_traits> basic_string_type;
00019 private:
00020 static basic_string_type makeString(const char* szSrc);
00021
00022 public:
00024 static charT null(){ return static_cast<charT>('\0'); }
00026 static charT crlf(){ return static_cast<charT>('\n'); }
00028 static charT sp(){ return static_cast<charT>(' '); }
00030 static charT tab(){ return static_cast<charT>('\t'); }
00031
00033 static charT lt(){ return static_cast<charT>('<'); }
00035 static charT eq(){ return static_cast<charT>('='); }
00037 static charT gt(){ return static_cast<charT>('>'); }
00038
00040 static charT slash(){ return static_cast<charT>('/'); }
00042 static charT hyphen(){ return static_cast<charT>('-'); }
00044 static charT colon() { return static_cast<charT>(':'); }
00046 static charT semicolon(){ return static_cast<charT>(';'); }
00047
00049 static charT exclamation(){ return static_cast<charT>('!'); }
00051 static charT question(){ return static_cast<charT>('?'); }
00053 static charT amp(){ return static_cast<charT>('&'); }
00054
00056 static charT dblquote() { return static_cast<charT>('\"'); }
00058 static charT quote() { return static_cast<charT>('\''); }
00059
00060
00061
00063
00064 return makeString("xml");
00065 }
00067 static basic_string_type cdata(){
00068 return makeString("CDATA");
00069 }
00071 static basic_string_type str_lt(){
00072 return makeString("lt");
00073 }
00075 static basic_string_type str_gt(){
00076 return makeString("gt");
00077 }
00079 static basic_string_type str_amp(){
00080 return makeString("amp");
00081 }
00083 static basic_string_type str_quot(){
00084 return makeString("quot");
00085 }
00087 static basic_string_type str_apos(){
00088 return makeString("apos");
00089 }
00090
00092 static basic_string_type str_xmlns(){
00093 return makeString("xmlns");
00094 }
00095
00104 static int ci_compare(const charT* s1,const charT* s2,size_t n){
00105 for(size_t i=0;i<n;i++){
00106 int c1,c2;
00107 c1 = std::tolower(static_cast<int>(s1[i]));
00108 c2 = std::tolower(static_cast<int>(s2[i]));
00109 if(c1>c2) return 1;
00110 if(c1<c2) return -1;
00111 }
00112 return 0;
00113 }
00114
00115 };
00116 }
00117
00118 #ifndef MiX_DEFAULTXMLTRAITS_CPP_
00119 #include "DefaultXMLTraits.cpp"
00120 #endif
00121
00122 #endif