Index: base/string_split.cc |
diff --git a/base/string_split.cc b/base/string_split.cc |
index 646b4de883595b6021b356fce304741cefda6e91..ca979541aee959e60d713438cbb3e6a921892533 100644 |
--- a/base/string_split.cc |
+++ b/base/string_split.cc |
@@ -9,6 +9,52 @@ |
#include "base/third_party/icu/icu_utf.h" |
#include "base/utf_string_conversions.h" |
+template<typename STR> |
+static void SplitStringT(const STR& str, |
+ const typename STR::value_type s, |
+ bool trim_whitespace, |
+ std::vector<STR>* r) { |
+ size_t last = 0; |
+ size_t i; |
+ size_t c = str.size(); |
+ for (i = 0; i <= c; ++i) { |
+ if (i == c || str[i] == s) { |
+ size_t len = i - last; |
+ STR tmp = str.substr(last, len); |
+ if (trim_whitespace) { |
+ STR t_tmp; |
+ TrimWhitespace(tmp, TRIM_ALL, &t_tmp); |
+ r->push_back(t_tmp); |
+ } else { |
+ r->push_back(tmp); |
+ } |
+ last = i + 1; |
+ } |
+ } |
+} |
+ |
+void SplitString(const std::wstring& str, |
+ wchar_t c, |
+ std::vector<std::wstring>* r) { |
+ SplitStringT(str, c, true, r); |
+} |
+ |
+#if !defined(WCHAR_T_IS_UTF16) |
+void SplitString(const string16& str, |
+ char16 c, |
+ std::vector<string16>* r) { |
+ DCHECK(CBU16_IS_SINGLE(c)); |
+ SplitStringT(str, c, true, r); |
+} |
+#endif |
+ |
+void SplitString(const std::string& str, |
+ char c, |
+ std::vector<std::string>* r) { |
+ DCHECK(c >= 0 && c < 0x7F); |
+ SplitStringT(str, c, true, r); |
+} |
+ |
namespace base { |
bool SplitStringIntoKeyValues( |
@@ -107,30 +153,6 @@ void SplitStringUsingSubstr(const std::string& str, |
SplitStringUsingSubstrT(str, s, r); |
} |
-template<typename STR> |
-static void SplitStringT(const STR& str, |
- const typename STR::value_type s, |
- bool trim_whitespace, |
- std::vector<STR>* r) { |
- size_t last = 0; |
- size_t i; |
- size_t c = str.size(); |
- for (i = 0; i <= c; ++i) { |
- if (i == c || str[i] == s) { |
- size_t len = i - last; |
- STR tmp = str.substr(last, len); |
- if (trim_whitespace) { |
- STR t_tmp; |
- TrimWhitespace(tmp, TRIM_ALL, &t_tmp); |
- r->push_back(t_tmp); |
- } else { |
- r->push_back(tmp); |
- } |
- last = i + 1; |
- } |
- } |
-} |
- |
void SplitStringDontTrim(const std::wstring& str, |
wchar_t c, |
std::vector<std::wstring>* r) { |
@@ -150,7 +172,7 @@ void SplitStringDontTrim(const std::string& str, |
char c, |
std::vector<std::string>* r) { |
DCHECK(IsStringUTF8(str)); |
- DCHECK(c < 0x7F); |
+ DCHECK(c >= 0 && c < 0x7F); |
SplitStringT(str, c, false, r); |
} |