| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "base/string_util.h" | 5 #include "base/string_util.h" |
| 6 | 6 |
| 7 #include "build/build_config.h" | 7 #include "build/build_config.h" |
| 8 | 8 |
| 9 #include <ctype.h> | 9 #include <ctype.h> |
| 10 #include <errno.h> | 10 #include <errno.h> |
| (...skipping 1306 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1317 SplitStringT(str, s, false, r); | 1317 SplitStringT(str, s, false, r); |
| 1318 } | 1318 } |
| 1319 #endif | 1319 #endif |
| 1320 | 1320 |
| 1321 void SplitStringDontTrim(const std::string& str, | 1321 void SplitStringDontTrim(const std::string& str, |
| 1322 char s, | 1322 char s, |
| 1323 std::vector<std::string>* r) { | 1323 std::vector<std::string>* r) { |
| 1324 SplitStringT(str, s, false, r); | 1324 SplitStringT(str, s, false, r); |
| 1325 } | 1325 } |
| 1326 | 1326 |
| 1327 template <typename STR> |
| 1328 static void SplitStringUsingSubstrT(const STR& str, |
| 1329 const STR& s, |
| 1330 std::vector<STR>* r) { |
| 1331 typename STR::size_type begin_index = 0; |
| 1332 while (true) { |
| 1333 const typename STR::size_type end_index = str.find(s, begin_index); |
| 1334 if (end_index == STR::npos) { |
| 1335 const STR term = str.substr(begin_index); |
| 1336 STR tmp; |
| 1337 TrimWhitespace(term, TRIM_ALL, &tmp); |
| 1338 r->push_back(tmp); |
| 1339 return; |
| 1340 } |
| 1341 const STR term = str.substr(begin_index, end_index - begin_index); |
| 1342 STR tmp; |
| 1343 TrimWhitespace(term, TRIM_ALL, &tmp); |
| 1344 r->push_back(tmp); |
| 1345 begin_index = end_index + s.size(); |
| 1346 } |
| 1347 } |
| 1348 |
| 1349 void SplitStringUsingSubstr(const string16& str, |
| 1350 const string16& s, |
| 1351 std::vector<string16>* r) { |
| 1352 SplitStringUsingSubstrT(str, s, r); |
| 1353 } |
| 1354 |
| 1355 void SplitStringUsingSubstr(const std::string& str, |
| 1356 const std::string& s, |
| 1357 std::vector<std::string>* r) { |
| 1358 SplitStringUsingSubstrT(str, s, r); |
| 1359 } |
| 1360 |
| 1361 std::vector<string16> SplitStringUsingSubstr(const string16& str, |
| 1362 const string16& s) { |
| 1363 std::vector<string16> result; |
| 1364 SplitStringUsingSubstr(str, s, &result); |
| 1365 return result; |
| 1366 } |
| 1367 |
| 1368 std::vector<std::string> SplitStringUsingSubstr(const std::string& str, |
| 1369 const std::string& s) { |
| 1370 std::vector<std::string> result; |
| 1371 SplitStringUsingSubstr(str, s, &result); |
| 1372 return result; |
| 1373 } |
| 1374 |
| 1327 template<typename STR> | 1375 template<typename STR> |
| 1328 static size_t TokenizeT(const STR& str, | 1376 static size_t TokenizeT(const STR& str, |
| 1329 const STR& delimiters, | 1377 const STR& delimiters, |
| 1330 std::vector<STR>* tokens) { | 1378 std::vector<STR>* tokens) { |
| 1331 tokens->clear(); | 1379 tokens->clear(); |
| 1332 | 1380 |
| 1333 typename STR::size_type start = str.find_first_not_of(delimiters); | 1381 typename STR::size_type start = str.find_first_not_of(delimiters); |
| 1334 while (start != STR::npos) { | 1382 while (start != STR::npos) { |
| 1335 typename STR::size_type end = str.find_first_of(delimiters, start + 1); | 1383 typename STR::size_type end = str.find_first_of(delimiters, start + 1); |
| 1336 if (end == STR::npos) { | 1384 if (end == STR::npos) { |
| (...skipping 503 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1840 // Each input byte creates two output hex characters. | 1888 // Each input byte creates two output hex characters. |
| 1841 std::string ret(size * 2, '\0'); | 1889 std::string ret(size * 2, '\0'); |
| 1842 | 1890 |
| 1843 for (size_t i = 0; i < size; ++i) { | 1891 for (size_t i = 0; i < size; ++i) { |
| 1844 char b = reinterpret_cast<const char*>(bytes)[i]; | 1892 char b = reinterpret_cast<const char*>(bytes)[i]; |
| 1845 ret[(i * 2)] = kHexChars[(b >> 4) & 0xf]; | 1893 ret[(i * 2)] = kHexChars[(b >> 4) & 0xf]; |
| 1846 ret[(i * 2) + 1] = kHexChars[b & 0xf]; | 1894 ret[(i * 2) + 1] = kHexChars[b & 0xf]; |
| 1847 } | 1895 } |
| 1848 return ret; | 1896 return ret; |
| 1849 } | 1897 } |
| OLD | NEW |