Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef GNASH_STRINGPREDICATES_H
00022 #define GNASH_STRINGPREDICATES_H
00023
00024 #include <string>
00025 #include <algorithm>
00026 #include <boost/algorithm/string/compare.hpp>
00027 #include <boost/algorithm/string/predicate.hpp>
00028
00029 namespace gnash {
00030
00032 class StringNoCaseLessThan {
00033 public:
00034 bool operator() (const std::string& a, const std::string& b) const
00035 {
00036 return std::lexicographical_compare(a.begin(), a.end(),
00037 b.begin(), b.end(),
00038 nocase_less());
00039 }
00040 private:
00041
00042 class nocase_less
00043 {
00044 public:
00045 nocase_less(const std::locale& locale = std::locale())
00046 : _locale(locale)
00047 {}
00048
00049 bool operator() (const char& a, const char& b) const
00050 {
00051 return std::toupper<char>(a, _locale) <
00052 std::toupper<char>(b, _locale);
00053 }
00054 private:
00055 const std::locale& _locale;
00056 };
00057 };
00058
00059
00061 class StringNoCaseEqual {
00062 public:
00063
00064 typedef bool result_type;
00065
00066 bool operator() (const std::string& a, const std::string& b) const
00067 {
00068 return boost::iequals(a, b);
00069 }
00070 };
00071
00072 }
00073
00074 #endif // GNASH_STRINGPREDICATES_H
00075
00076
00077
00078
00079