summaryrefslogtreecommitdiffstats
path: root/base/strings
diff options
context:
space:
mode:
authorpkasting@chromium.org <pkasting@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-05-30 08:16:10 +0000
committerpkasting@chromium.org <pkasting@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-05-30 08:16:10 +0000
commitef92dbefb269e1ca548ccb7a7fecb1d69c3a87fe (patch)
tree092af8f9dd66777c0b34975cf999d54b37d6279e /base/strings
parentc8884db174f04db3f766da5d3caadbd2432c6f84 (diff)
downloadchromium_src-ef92dbefb269e1ca548ccb7a7fecb1d69c3a87fe.zip
chromium_src-ef92dbefb269e1ca548ccb7a7fecb1d69c3a87fe.tar.gz
chromium_src-ef92dbefb269e1ca548ccb7a7fecb1d69c3a87fe.tar.bz2
Make various string_util functions take StringPieces instead of char[].
This allows most callers to pass string literals or results of ASCIIToUTF16(), rather than construct error-prone character arrays that must be manually nul-terminated. Also cleans up various bits of the callers. BUG=104260 TEST=none Review URL: https://codereview.chromium.org/296593003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@273765 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/strings')
-rw-r--r--base/strings/string_util.cc71
-rw-r--r--base/strings/string_util.h27
2 files changed, 49 insertions, 49 deletions
diff --git a/base/strings/string_util.cc b/base/strings/string_util.cc
index e23317e..e64b95f 100644
--- a/base/strings/string_util.cc
+++ b/base/strings/string_util.cc
@@ -113,7 +113,7 @@ const string16& EmptyString16() {
template<typename STR>
bool ReplaceCharsT(const STR& input,
- const typename STR::value_type replace_chars[],
+ const STR& replace_chars,
const STR& replace_with,
STR* output) {
bool removed = false;
@@ -132,41 +132,41 @@ bool ReplaceCharsT(const STR& input,
}
bool ReplaceChars(const string16& input,
- const char16 replace_chars[],
+ const base::StringPiece16& replace_chars,
const string16& replace_with,
string16* output) {
- return ReplaceCharsT(input, replace_chars, replace_with, output);
+ return ReplaceCharsT(input, replace_chars.as_string(), replace_with, output);
}
bool ReplaceChars(const std::string& input,
- const char replace_chars[],
+ const base::StringPiece& replace_chars,
const std::string& replace_with,
std::string* output) {
- return ReplaceCharsT(input, replace_chars, replace_with, output);
+ return ReplaceCharsT(input, replace_chars.as_string(), replace_with, output);
}
bool RemoveChars(const string16& input,
- const char16 remove_chars[],
+ const base::StringPiece16& remove_chars,
string16* output) {
- return ReplaceChars(input, remove_chars, string16(), output);
+ return ReplaceChars(input, remove_chars.as_string(), string16(), output);
}
bool RemoveChars(const std::string& input,
- const char remove_chars[],
+ const base::StringPiece& remove_chars,
std::string* output) {
- return ReplaceChars(input, remove_chars, std::string(), output);
+ return ReplaceChars(input, remove_chars.as_string(), std::string(), output);
}
template<typename STR>
TrimPositions TrimStringT(const STR& input,
- const typename STR::value_type trim_chars[],
+ const STR& trim_chars,
TrimPositions positions,
STR* output) {
// Find the edges of leading/trailing whitespace as desired.
- const typename STR::size_type last_char = input.length() - 1;
- const typename STR::size_type first_good_char = (positions & TRIM_LEADING) ?
+ const size_t last_char = input.length() - 1;
+ const size_t first_good_char = (positions & TRIM_LEADING) ?
input.find_first_not_of(trim_chars) : 0;
- const typename STR::size_type last_good_char = (positions & TRIM_TRAILING) ?
+ const size_t last_good_char = (positions & TRIM_TRAILING) ?
input.find_last_not_of(trim_chars) : last_char;
// When the string was all whitespace, report that we stripped off whitespace
@@ -190,15 +190,17 @@ TrimPositions TrimStringT(const STR& input,
}
bool TrimString(const string16& input,
- const char16 trim_chars[],
+ const base::StringPiece16& trim_chars,
string16* output) {
- return TrimStringT(input, trim_chars, TRIM_ALL, output) != TRIM_NONE;
+ return TrimStringT(input, trim_chars.as_string(), TRIM_ALL, output) !=
+ TRIM_NONE;
}
bool TrimString(const std::string& input,
- const char trim_chars[],
+ const base::StringPiece& trim_chars,
std::string* output) {
- return TrimStringT(input, trim_chars, TRIM_ALL, output) != TRIM_NONE;
+ return TrimStringT(input, trim_chars.as_string(), TRIM_ALL, output) !=
+ TRIM_NONE;
}
void TruncateUTF8ToByteSize(const std::string& input,
@@ -240,13 +242,14 @@ void TruncateUTF8ToByteSize(const std::string& input,
TrimPositions TrimWhitespace(const string16& input,
TrimPositions positions,
string16* output) {
- return TrimStringT(input, kWhitespaceUTF16, positions, output);
+ return TrimStringT(input, base::string16(kWhitespaceUTF16), positions,
+ output);
}
TrimPositions TrimWhitespaceASCII(const std::string& input,
TrimPositions positions,
std::string* output) {
- return TrimStringT(input, kWhitespaceASCII, positions, output);
+ return TrimStringT(input, std::string(kWhitespaceASCII), positions, output);
}
// This function is only for backward-compatibility.
@@ -435,17 +438,15 @@ bool StartsWith(const string16& str, const string16& search,
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();
+ size_t str_length = str.length();
+ size_t search_length = search.length();
if (search_length > str_length)
return false;
- if (case_sensitive) {
+ if (case_sensitive)
return str.compare(str_length - search_length, search_length, search) == 0;
- } else {
- return std::equal(search.begin(), search.end(),
- str.begin() + (str_length - search_length),
- base::CaseInsensitiveCompare<typename STR::value_type>());
- }
+ return std::equal(search.begin(), search.end(),
+ str.begin() + (str_length - search_length),
+ base::CaseInsensitiveCompare<typename STR::value_type>());
}
bool EndsWith(const std::string& str, const std::string& search,
@@ -491,7 +492,7 @@ string16 FormatBytesUnlocalized(int64 bytes) {
template<class StringType>
void DoReplaceSubstringsAfterOffset(StringType* str,
- typename StringType::size_type start_offset,
+ size_t start_offset,
const StringType& find_this,
const StringType& replace_with,
bool replace_all) {
@@ -499,7 +500,7 @@ void DoReplaceSubstringsAfterOffset(StringType* str,
return;
DCHECK(!find_this.empty());
- for (typename StringType::size_type offs(str->find(find_this, start_offset));
+ for (size_t offs(str->find(find_this, start_offset));
offs != StringType::npos; offs = str->find(find_this, offs)) {
str->replace(offs, find_this.length(), replace_with);
offs += replace_with.length();
@@ -510,7 +511,7 @@ void DoReplaceSubstringsAfterOffset(StringType* str,
}
void ReplaceFirstSubstringAfterOffset(string16* str,
- string16::size_type start_offset,
+ size_t start_offset,
const string16& find_this,
const string16& replace_with) {
DoReplaceSubstringsAfterOffset(str, start_offset, find_this, replace_with,
@@ -518,7 +519,7 @@ void ReplaceFirstSubstringAfterOffset(string16* str,
}
void ReplaceFirstSubstringAfterOffset(std::string* str,
- std::string::size_type start_offset,
+ size_t start_offset,
const std::string& find_this,
const std::string& replace_with) {
DoReplaceSubstringsAfterOffset(str, start_offset, find_this, replace_with,
@@ -526,7 +527,7 @@ void ReplaceFirstSubstringAfterOffset(std::string* str,
}
void ReplaceSubstringsAfterOffset(string16* str,
- string16::size_type start_offset,
+ size_t start_offset,
const string16& find_this,
const string16& replace_with) {
DoReplaceSubstringsAfterOffset(str, start_offset, find_this, replace_with,
@@ -534,7 +535,7 @@ void ReplaceSubstringsAfterOffset(string16* str,
}
void ReplaceSubstringsAfterOffset(std::string* str,
- std::string::size_type start_offset,
+ size_t start_offset,
const std::string& find_this,
const std::string& replace_with) {
DoReplaceSubstringsAfterOffset(str, start_offset, find_this, replace_with,
@@ -548,9 +549,9 @@ static size_t TokenizeT(const STR& str,
std::vector<STR>* tokens) {
tokens->clear();
- typename STR::size_type start = str.find_first_not_of(delimiters);
+ size_t start = str.find_first_not_of(delimiters);
while (start != STR::npos) {
- typename STR::size_type end = str.find_first_of(delimiters, start + 1);
+ size_t end = str.find_first_of(delimiters, start + 1);
if (end == STR::npos) {
tokens->push_back(str.substr(start));
break;
diff --git a/base/strings/string_util.h b/base/strings/string_util.h
index 9478a0c..a573e22 100644
--- a/base/strings/string_util.h
+++ b/base/strings/string_util.h
@@ -150,10 +150,10 @@ BASE_EXPORT extern const char kUtf8ByteOrderMark[];
// if any characters were removed. |remove_chars| must be null-terminated.
// NOTE: Safe to use the same variable for both |input| and |output|.
BASE_EXPORT bool RemoveChars(const string16& input,
- const char16 remove_chars[],
+ const base::StringPiece16& remove_chars,
string16* output);
BASE_EXPORT bool RemoveChars(const std::string& input,
- const char remove_chars[],
+ const base::StringPiece& remove_chars,
std::string* output);
// Replaces characters in |replace_chars| from anywhere in |input| with
@@ -162,11 +162,11 @@ BASE_EXPORT bool RemoveChars(const std::string& input,
// |replace_chars| must be null-terminated.
// NOTE: Safe to use the same variable for both |input| and |output|.
BASE_EXPORT bool ReplaceChars(const string16& input,
- const char16 replace_chars[],
+ const base::StringPiece16& replace_chars,
const string16& replace_with,
string16* output);
BASE_EXPORT bool ReplaceChars(const std::string& input,
- const char replace_chars[],
+ const base::StringPiece& replace_chars,
const std::string& replace_with,
std::string* output);
@@ -174,10 +174,10 @@ BASE_EXPORT bool ReplaceChars(const std::string& input,
// |trim_chars| must be null-terminated.
// NOTE: Safe to use the same variable for both |input| and |output|.
BASE_EXPORT bool TrimString(const string16& input,
- const char16 trim_chars[],
+ const base::StringPiece16& trim_chars,
string16* output);
BASE_EXPORT bool TrimString(const std::string& input,
- const char trim_chars[],
+ const base::StringPiece& trim_chars,
std::string* output);
// Truncates a string to the nearest UTF-8 character that will leave
@@ -378,12 +378,12 @@ BASE_EXPORT base::string16 FormatBytesUnlocalized(int64 bytes);
// |find_this| with |replace_with|.
BASE_EXPORT void ReplaceFirstSubstringAfterOffset(
base::string16* str,
- base::string16::size_type start_offset,
+ size_t start_offset,
const base::string16& find_this,
const base::string16& replace_with);
BASE_EXPORT void ReplaceFirstSubstringAfterOffset(
std::string* str,
- std::string::size_type start_offset,
+ size_t start_offset,
const std::string& find_this,
const std::string& replace_with);
@@ -395,14 +395,13 @@ BASE_EXPORT void ReplaceFirstSubstringAfterOffset(
// std::replace(str.begin(), str.end(), 'a', 'b');
BASE_EXPORT void ReplaceSubstringsAfterOffset(
base::string16* str,
- base::string16::size_type start_offset,
+ size_t start_offset,
const base::string16& find_this,
const base::string16& replace_with);
-BASE_EXPORT void ReplaceSubstringsAfterOffset(
- std::string* str,
- std::string::size_type start_offset,
- const std::string& find_this,
- const std::string& replace_with);
+BASE_EXPORT void ReplaceSubstringsAfterOffset(std::string* str,
+ size_t start_offset,
+ const std::string& find_this,
+ const std::string& replace_with);
// Reserves enough memory in |str| to accommodate |length_with_null| characters,
// sets the size of |str| to |length_with_null - 1| characters, and returns a