diff --git a/convert/text.h b/convert/text.h index 2959ef2..b2930b6 100644 --- a/convert/text.h +++ b/convert/text.h @@ -107,34 +107,7 @@ void ToUpper(std::wstring & s); -template -bool EqualNoCase(const StringType1 * str1, const StringType2 * str2) -{ - while( *str1 && *str2 && ToLower(*str1) == ToLower(*str2) ) - { - ++str1; - ++str2; - } - if( *str1 == 0 && *str2 == 0 ) - return true; - -return false; -} - - -template -bool EqualNoCase(const StringType1 & str1, const StringType2 & str2) -{ - return EqualNoCase(str1.c_str(), str2.c_str()); -} - - -template -bool EqualNoCasep(const StringType1 * str1, const StringType2 * str2) -{ - return EqualNoCase(str1, str2); -} template @@ -149,7 +122,7 @@ int CompareNoCase(const StringType1 * str1, const StringType2 * str2) if( *str1 == 0 && *str2 == 0 ) return 0; -return (int)ToLower(*str1) - (int)ToLower(*str2); + return (int)ToLower(*str1) - (int)ToLower(*str2); } @@ -167,23 +140,64 @@ int CompareNoCasep(const StringType1 * str1, const StringType2 * str2) } + + template -bool EqualNoCase(const StringType1 * str1_begin, const StringType1 * str1_end, const StringType2 * str2) +int CompareNoCase(const StringType1 * str1_begin, const StringType1 * str1_end, const StringType2 * str2) { - while( str1_begin < str1_end && *str2 && PT::ToLower(*str1_begin) == PT::ToLower(*str2) ) + while( str1_begin < str1_end && *str2 && ToLower(*str1_begin) == ToLower(*str2) ) { ++str1_begin; ++str2; } if( str1_begin == str1_end && *str2 == 0 ) - return true; + return 0; -return false; + wchar_t str1_char = 0; + + if( str1_begin < str1_end ) + str1_char = *str1_begin; + + return (int)ToLower(str1_char) - (int)ToLower(*str2); } + + +template +bool EqualNoCase(const StringType1 * str1, const StringType2 * str2) +{ + return CompareNoCase(str1, str2) == 0; +} + + +template +bool EqualNoCase(const StringType1 & str1, const StringType2 & str2) +{ + return EqualNoCase(str1.c_str(), str2.c_str()); +} + + +template +bool EqualNoCasep(const StringType1 * str1, const StringType2 * str2) +{ + return EqualNoCase(str1, str2); +} + + + +template +bool EqualNoCase(const StringType1 * str1_begin, const StringType1 * str1_end, const StringType2 * str2) +{ + return CompareNoCase(str1_begin, str1_end, str2) == 0; +} + + + + + }