00001
00002 #ifndef MiX_DEFAULTXMLTRAITS_H_
00003 #define MiX_DEFAULTXMLTRAITS_H_
00004
00005
00006
00007
00008
00009
00010 #include <string>
00011 #include <cctype>
00012 #include "config.h"
00013
00014 namespace MiX{
00015
00016 template <class charT,class char_traits>
00017 class DefaultXMLTraits{
00018 public:
00019 typedef std::basic_string<charT,char_traits> basic_string_type;
00020 private:
00021 static basic_string_type makeString(const char* szSrc);
00022
00023 public:
00025 static charT null(){ return static_cast<charT>('\0'); }
00027 static charT crlf(){ return static_cast<charT>('\n'); }
00029 static charT sp(){ return static_cast<charT>(' '); }
00031 static charT tab(){ return static_cast<charT>('\t'); }
00032
00034 static charT lt(){ return static_cast<charT>('<'); }
00036 static charT eq(){ return static_cast<charT>('='); }
00038 static charT gt(){ return static_cast<charT>('>'); }
00039
00041 static charT slash(){ return static_cast<charT>('/'); }
00043 static charT hyphen(){ return static_cast<charT>('-'); }
00045 static charT colon() { return static_cast<charT>(':'); }
00047 static charT semicolon(){ return static_cast<charT>(';'); }
00048
00050 static charT exclamation(){ return static_cast<charT>('!'); }
00052 static charT question(){ return static_cast<charT>('?'); }
00054 static charT amp(){ return static_cast<charT>('&'); }
00055
00057 static charT dblquote() { return static_cast<charT>('\"'); }
00059 static charT quote() { return static_cast<charT>('\''); }
00060
00061
00062
00064
00065 return makeString("xml");
00066 }
00068 static basic_string_type cdata(){
00069 return makeString("CDATA");
00070 }
00072 static basic_string_type str_lt(){
00073 return makeString("lt");
00074 }
00076 static basic_string_type str_gt(){
00077 return makeString("gt");
00078 }
00080 static basic_string_type str_amp(){
00081 return makeString("amp");
00082 }
00084 static basic_string_type str_quot(){
00085 return makeString("quot");
00086 }
00088 static basic_string_type str_apos(){
00089 return makeString("apos");
00090 }
00091
00093 static basic_string_type str_xmlns(){
00094 return makeString("xmlns");
00095 }
00096
00105 static int ci_compare(const charT* s1,const charT* s2,size_t n){
00106 for(size_t i=0;i<n;i++){
00107 int c1,c2;
00108 c1 = std::tolower(static_cast<int>(s1[i]));
00109 c2 = std::tolower(static_cast<int>(s2[i]));
00110 if(c1>c2) return 1;
00111 if(c1<c2) return -1;
00112 }
00113 return 0;
00114 }
00115
00116 };
00117 }
00118
00119 #ifndef MiX_DEFAULTXMLTRAITS_CPP_
00120 #include "DefaultXMLTraits.cpp"
00121 #endif
00122
00123 #endif