diff options
author | darin@chromium.org <darin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-10-15 23:22:56 +0000 |
---|---|---|
committer | darin@chromium.org <darin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-10-15 23:22:56 +0000 |
commit | 24d4f62c457557c780f9ae3f712f6217e5365dcd (patch) | |
tree | 05e6ac870018c0fcf54c21673ac176d92bb03aaa /base/string_util.cc | |
parent | 9b90411688764bb782a7451551d30226073b6bc0 (diff) | |
download | chromium_src-24d4f62c457557c780f9ae3f712f6217e5365dcd.zip chromium_src-24d4f62c457557c780f9ae3f712f6217e5365dcd.tar.gz chromium_src-24d4f62c457557c780f9ae3f712f6217e5365dcd.tar.bz2 |
Add string16 support for LowerCaseEqualsASCII, StartsWith, and EndsWith.
R=mpcomplete
BUG=none
TEST=none
Review URL: http://codereview.chromium.org/274067
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@29209 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/string_util.cc')
-rw-r--r-- | base/string_util.cc | 66 |
1 files changed, 56 insertions, 10 deletions
diff --git a/base/string_util.cc b/base/string_util.cc index e02aa90..5d15299 100644 --- a/base/string_util.cc +++ b/base/string_util.cc @@ -751,6 +751,12 @@ bool LowerCaseEqualsASCII(const std::wstring& a, const char* b) { return DoLowerCaseEqualsASCII(a.begin(), a.end(), b); } +#if !defined(WCHAR_T_IS_UTF16) +bool LowerCaseEqualsASCII(const string16& a, const char* b) { + return DoLowerCaseEqualsASCII(a.begin(), a.end(), b); +} +#endif + bool LowerCaseEqualsASCII(std::string::const_iterator a_begin, std::string::const_iterator a_end, const char* b) { @@ -762,17 +768,35 @@ bool LowerCaseEqualsASCII(std::wstring::const_iterator a_begin, const char* b) { return DoLowerCaseEqualsASCII(a_begin, a_end, b); } + +#if !defined(WCHAR_T_IS_UTF16) +bool LowerCaseEqualsASCII(string16::const_iterator a_begin, + string16::const_iterator a_end, + const char* b) { + return DoLowerCaseEqualsASCII(a_begin, a_end, b); +} +#endif + bool LowerCaseEqualsASCII(const char* a_begin, const char* a_end, const char* b) { return DoLowerCaseEqualsASCII(a_begin, a_end, b); } + bool LowerCaseEqualsASCII(const wchar_t* a_begin, const wchar_t* a_end, const char* b) { return DoLowerCaseEqualsASCII(a_begin, a_end, b); } +#if !defined(WCHAR_T_IS_UTF16) +bool LowerCaseEqualsASCII(const char16* a_begin, + const char16* a_end, + const char* b) { + return DoLowerCaseEqualsASCII(a_begin, a_end, b); +} +#endif + bool EqualsASCII(const string16& a, const base::StringPiece& b) { if (a.length() != b.length()) return false; @@ -788,24 +812,34 @@ bool StartsWithASCII(const std::string& str, return base::strncasecmp(str.c_str(), search.c_str(), search.length()) == 0; } -bool StartsWith(const std::wstring& str, - const std::wstring& search, - bool case_sensitive) { +template <typename STR> +bool StartsWithT(const STR& str, const STR& search, bool case_sensitive) { if (case_sensitive) return str.compare(0, search.length(), search) == 0; else { if (search.size() > str.size()) return false; return std::equal(search.begin(), search.end(), str.begin(), - CaseInsensitiveCompare<wchar_t>()); + CaseInsensitiveCompare<typename STR::value_type>()); } } -bool EndsWith(const std::wstring& str, - const std::wstring& search, - bool case_sensitive) { - std::wstring::size_type str_length = str.length(); - std::wstring::size_type search_length = search.length(); +bool StartsWith(const std::wstring& str, const std::wstring& search, + bool case_sensitive) { + return StartsWithT(str, search, case_sensitive); +} + +#if !defined(WCHAR_T_IS_UTF16) +bool StartsWith(const string16& str, const string16& search, + bool case_sensitive) { + return StartsWithT(str, search, case_sensitive); +} +#endif + +template <typename STR> +bool EndsWithT(const STR& str, const STR& search, bool case_sensitive) { + typename STR::size_type str_length = str.length(); + typename STR::size_type search_length = search.length(); if (search_length > str_length) return false; if (case_sensitive) { @@ -813,10 +847,22 @@ bool EndsWith(const std::wstring& str, } else { return std::equal(search.begin(), search.end(), str.begin() + (str_length - search_length), - CaseInsensitiveCompare<wchar_t>()); + CaseInsensitiveCompare<typename STR::value_type>()); } } +bool EndsWith(const std::wstring& str, const std::wstring& search, + bool case_sensitive) { + return EndsWithT(str, search, case_sensitive); +} + +#if !defined(WCHAR_T_IS_UTF16) +bool EndsWith(const string16& str, const string16& search, + bool case_sensitive) { + return EndsWithT(str, search, case_sensitive); +} +#endif + DataUnits GetByteDisplayUnits(int64 bytes) { // The byte thresholds at which we display amounts. A byte count is displayed // in unit U when kUnitThresholds[U] <= bytes < kUnitThresholds[U+1]. |