summaryrefslogtreecommitdiffstats
path: root/base/string_util.cc
diff options
context:
space:
mode:
Diffstat (limited to 'base/string_util.cc')
-rw-r--r--base/string_util.cc66
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].