• Main Page
  • Related Pages
  • Namespaces
  • Classes
  • Files
  • Examples
  • File List
  • File Members

StringPredicates.h

Go to the documentation of this file.
00001 // 
00002 //   Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Free Software
00003 //   Foundation, Inc
00004 // 
00005 // This program is free software; you can redistribute it and/or modify
00006 // it under the terms of the GNU General Public License as published by
00007 // the Free Software Foundation; either version 3 of the License, or
00008 // (at your option) any later version.
00009 // 
00010 // This program is distributed in the hope that it will be useful,
00011 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00012 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00013 // GNU General Public License for more details.
00014 // 
00015 // You should have received a copy of the GNU General Public License
00016 // along with this program; if not, write to the Free Software
00017 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
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 } // namespace gnash
00073 
00074 #endif // GNASH_STRINGPREDICATES_H
00075 
00076 // Local Variables:
00077 // mode: C++
00078 // indent-tabs-mode: t
00079 // End:

Generated on Thu Sep 30 2010 14:35:03 for Gnash by  doxygen 1.7.1