#ifndef __UTILS_H__ #define __UTILS_H__ #include <string> #include <locale> namespace STG { class IsNotSpace : public std::unary_function<bool, char> { public: IsNotSpace(const std::locale & l) : loc(l) {}; bool operator() (char c) { return !std::use_facet<casefacet>(loc).is(std::ctype_base::space, c); }; private: const std::locale & loc; typedef std::ctype<char> casefacet; }; class ToLowerHelper : public std::unary_function<char, char> { public: ToLowerHelper(const std::locale & l) : loc(l) {}; char operator() (char c) { return std::tolower(c, loc); }; private: const std::locale & loc; }; class ToUpperHelper : public std::unary_function<char, char> { public: ToUpperHelper(const std::locale & l) : loc(l) {}; char operator() (char c) { return std::toupper(c, loc); }; private: const std::locale & loc; }; std::string Trim(const std::string & val, const std::locale & loc); std::string ToLower(const std::string & val, const std::locale & loc); std::string ToUpper(const std::string & val, const std::locale & loc); inline std::string Trim(const std::string & val) { return Trim(val, std::locale("")); } inline std::string ToLower(const std::string & val) { return ToLower(val, std::locale("")); } inline std::string ToUpper(const std::string & val) { return ToUpper(val, std::locale("")); } } std::string inet_ntostring(uint32_t ip); #endif