diff options
author | brettw <brettw@chromium.org> | 2015-07-14 15:42:19 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-07-14 22:43:54 +0000 |
commit | 0eabfa001ba06d3c66992b95b69a988ef0633992 (patch) | |
tree | a62a2b2c2e828f99ac192c41048e247fb0aa32da /base/strings | |
parent | 28c7c11feb94dc2593e5a4bf2b7aeb9d15bd0e49 (diff) | |
download | chromium_src-0eabfa001ba06d3c66992b95b69a988ef0633992.zip chromium_src-0eabfa001ba06d3c66992b95b69a988ef0633992.tar.gz chromium_src-0eabfa001ba06d3c66992b95b69a988ef0633992.tar.bz2 |
Move JoinString to the base namespace.
Change "Separator" from string to StringPIece (most are constants). Remove char versions for symmetry with SplitString.
Update callers who pass empty separators to use a base::StringPiece()
Change chromecast/base/metrics/cast_metrics_helper.cc to not use JoinString at all and just append to the output (code is simpler and faster).
TBR=zelidrag@chromium.org for chromeos
Review URL: https://codereview.chromium.org/1223153003
Cr-Commit-Position: refs/heads/master@{#338762}
Diffstat (limited to 'base/strings')
-rw-r--r-- | base/strings/string_util.cc | 23 | ||||
-rw-r--r-- | base/strings/string_util.h | 22 | ||||
-rw-r--r-- | base/strings/string_util_unittest.cc | 22 |
3 files changed, 15 insertions, 52 deletions
diff --git a/base/strings/string_util.cc b/base/strings/string_util.cc index ae5fb80..a0c95ec 100644 --- a/base/strings/string_util.cc +++ b/base/strings/string_util.cc @@ -884,43 +884,36 @@ char16* WriteInto(base::string16* str, size_t length_with_null) { return WriteIntoT(str, length_with_null); } -} // namespace base - template<typename STR> -static STR JoinStringT(const std::vector<STR>& parts, const STR& sep) { +static STR JoinStringT(const std::vector<STR>& parts, + BasicStringPiece<STR> sep) { if (parts.empty()) return STR(); STR result(parts[0]); - typename std::vector<STR>::const_iterator iter = parts.begin(); + auto iter = parts.begin(); ++iter; for (; iter != parts.end(); ++iter) { - result += sep; + sep.AppendToString(&result); result += *iter; } return result; } -std::string JoinString(const std::vector<std::string>& parts, char sep) { - return JoinStringT(parts, std::string(1, sep)); -} - -string16 JoinString(const std::vector<string16>& parts, char16 sep) { - return JoinStringT(parts, string16(1, sep)); -} - std::string JoinString(const std::vector<std::string>& parts, - const std::string& separator) { + StringPiece separator) { return JoinStringT(parts, separator); } string16 JoinString(const std::vector<string16>& parts, - const string16& separator) { + StringPiece16 separator) { return JoinStringT(parts, separator); } +} // namespace base + template<class FormatStringType, class OutStringType> OutStringType DoReplaceStringPlaceholders(const FormatStringType& format_string, const std::vector<OutStringType>& subst, std::vector<size_t>* offsets) { diff --git a/base/strings/string_util.h b/base/strings/string_util.h index e4abce2..b75a9f88 100644 --- a/base/strings/string_util.h +++ b/base/strings/string_util.h @@ -491,6 +491,12 @@ BASE_EXPORT char16* WriteInto(base::string16* str, size_t length_with_null); BASE_EXPORT wchar_t* WriteInto(std::wstring* str, size_t length_with_null); #endif +// Does the opposite of SplitString(). +BASE_EXPORT std::string JoinString(const std::vector<std::string>& parts, + StringPiece separator); +BASE_EXPORT string16 JoinString(const std::vector<string16>& parts, + StringPiece16 separator); + } // namespace base #if defined(OS_WIN) @@ -501,22 +507,6 @@ BASE_EXPORT wchar_t* WriteInto(std::wstring* str, size_t length_with_null); #error Define string operations appropriately for your platform #endif -//----------------------------------------------------------------------------- - -// Does the opposite of SplitString(). -BASE_EXPORT base::string16 JoinString(const std::vector<base::string16>& parts, - base::char16 s); -BASE_EXPORT std::string JoinString( - const std::vector<std::string>& parts, char s); - -// Join |parts| using |separator|. -BASE_EXPORT std::string JoinString( - const std::vector<std::string>& parts, - const std::string& separator); -BASE_EXPORT base::string16 JoinString( - const std::vector<base::string16>& parts, - const base::string16& separator); - // Replace $1-$2-$3..$9 in the format string with |a|-|b|-|c|..|i| respectively. // Additionally, any number of consecutive '$' characters is replaced by that // number less one. Eg $$->$, $$$->$$, etc. The offsets parameter here can be diff --git a/base/strings/string_util_unittest.cc b/base/strings/string_util_unittest.cc index 1593f81..5d5ba8b 100644 --- a/base/strings/string_util_unittest.cc +++ b/base/strings/string_util_unittest.cc @@ -669,26 +669,7 @@ TEST(StringUtilTest, HexDigitToInt) { EXPECT_EQ(15, HexDigitToInt('f')); } -// Test for JoinString TEST(StringUtilTest, JoinString) { - std::vector<std::string> in; - EXPECT_EQ("", JoinString(in, ',')); - - in.push_back("a"); - EXPECT_EQ("a", JoinString(in, ',')); - - in.push_back("b"); - in.push_back("c"); - EXPECT_EQ("a,b,c", JoinString(in, ',')); - - in.push_back(std::string()); - EXPECT_EQ("a,b,c,", JoinString(in, ',')); - in.push_back(" "); - EXPECT_EQ("a|b|c|| ", JoinString(in, '|')); -} - -// Test for JoinString overloaded with std::string separator -TEST(StringUtilTest, JoinStringWithString) { std::string separator(", "); std::vector<std::string> parts; EXPECT_EQ(std::string(), JoinString(parts, separator)); @@ -706,8 +687,7 @@ TEST(StringUtilTest, JoinStringWithString) { EXPECT_EQ("a|b|c|| ", JoinString(parts, "|")); } -// Test for JoinString overloaded with string16 separator -TEST(StringUtilTest, JoinStringWithString16) { +TEST(StringUtilTest, JoinString16) { string16 separator = ASCIIToUTF16(", "); std::vector<string16> parts; EXPECT_EQ(string16(), JoinString(parts, separator)); |