00001
00002 #ifndef MIX_DEFAULTXMLTRAITS_H_
00003 #define MIX_DEFAULTXMLTRAITS_H_
00004
00005 #include <string>
00006 #include "config.h"
00007
00008 namespace MiX{
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
00099 static int ci_compare(const charT* s1,const charT* s2,size_t n){
00100 for(size_t i=0;i<n;i++){
00101 int c1,c2;
00102 c1 = tolower(static_cast<int>(s1[i]));
00103 c2 = tolower(static_cast<int>(s2[i]));
00104 if(c1>c2) return 1;
00105 if(c1<c2) return -1;
00106 }
00107 return 0;
00108 }
00109
00110 };
00111 }
00112
00113 #ifndef MIX_DEFAULTXMLTRAITS_CPP_
00114 #include "DefaultXMLTraits.cpp"
00115 #endif
00116
00117 #endif