#include #include "string_functions.h" wchar_t ToLower(wchar_t c) { if( c >= 'A' && c <= 'Z' ) c = c - 'A' + 'a'; return c; } bool CompareNoCase(const wchar_t * str1, const wchar_t * str2) { while( *str1 && *str2 && ToLower(*str1) == ToLower(*str2) ) { ++str1; ++str2; } if( *str1 == 0 && *str2 == 0 ) return true; return false; } bool CompareNoCase(const std::wstring & str1, const wchar_t * str2) { return CompareNoCase(str1.c_str(), str2); } bool IsDecDigit(wchar_t c) { if( c >= '0' && c <= '9' ) return true; return false; } bool IsHexDigit(wchar_t c) { if( c >= '0' && c <= '9' ) return true; if( ToLower(c) >= 'a' && ToLower(c) <= 'f' ) return true; return false; } int HexDigitToValue(wchar_t c) { if( c >= '0' && c <= '9' ) return static_cast(c - '0'); if( ToLower(c) >= 'a' && ToLower(c) <= 'f' ) return static_cast(c - 'a') + 10; return 0; } // do not use \r or \n here bool IsWhite(wchar_t c) { return (c == ' ' || c == '\t'); } void TrimWhiteAtEnd(std::wstring & str) { if( !str.empty() ) { size_t i = str.size(); while( i > 0 && IsWhite(str[i-1]) ) { i -= 1; } if( i < str.size() ) str.erase(i); } }