00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #ifndef UTIL_STRING_H
00028 #define UTIL_STRING_H
00029
00030 #include <PVLE/Export.h>
00031 #include <string>
00032
00035 char unspecial(int c) {
00036 switch (c) {
00037 case 'à': case 'â': case 'ä': case 132: case 145: case 160: case 166: return 'a';
00038 case 'À': case 'Â': case 'Ä': case 143: case 146: return 'A';
00039 case 'é': case 'è': case 'ê': case 'ë': return 'e';
00040 case 'É': case 'È': case 'Ê': case 'Ë': return 'E';
00041 case 'î': case 'ï': case 'ì': case 161: return 'i';
00042 case 'Î': case 'Ï': case 'Ì': return 'I';
00043 case 'ô': case 'ö': case 'ò': case 162: case 167: return 'o';
00044 case 'Ô': case 'Ö': case 'Ò': return 'O';
00045 case 'ù': case 'û': case 'ü': case 163: return 'u';
00046 case 'Ù': case 'Û': case 'Ü': return 'U';
00047 case 'ÿ': return 'y';
00048
00049 case 'ç': return 'c';
00050 case 'Ç': return 'C';
00051 case 'ñ': return 'n';
00052 case 'Ñ': return 'N';
00053 default: return c;
00054 }
00055 }
00056
00057
00058 std::string str_replace_specials(const std::string & s) {
00059 std::string res;
00060 unsigned int len = s.length();
00061 res.reserve(len);
00062 for(unsigned int i=0; i<len; ++i) res[i] = unspecial(s[i]);
00063 return res;
00064 }
00065
00066
00068 struct PVLE_EXPORT lexical_less {
00069 bool operator()(const std::string & str1, const std::string & str2) const;
00070 };
00071
00072
00073 #endif // UTIL_STRING_H