diff options
author | tony@chromium.org <tony@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-10-29 19:48:54 +0000 |
---|---|---|
committer | tony@chromium.org <tony@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-10-29 19:48:54 +0000 |
commit | 08daf0542dc5743a82bf55e8684bf1625ad7d997 (patch) | |
tree | ff4c2a2199746fff3c6d29e46d32e7e0e9e5ced9 /base | |
parent | aece9ccd4c38dca6daad04c94d1cc96677e1fbac (diff) | |
download | chromium_src-08daf0542dc5743a82bf55e8684bf1625ad7d997.zip chromium_src-08daf0542dc5743a82bf55e8684bf1625ad7d997.tar.gz chromium_src-08daf0542dc5743a82bf55e8684bf1625ad7d997.tar.bz2 |
Convert ReplaceStringPlaceholders(std::string...) to take a
StringPiece as the format string instead. This allows us to save
a string copy in the new tab page.
Also clean up some code in the extensions process binding that
was doing excess string conversions.
BUG=26228
Review URL: http://codereview.chromium.org/347019
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@30491 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base')
-rw-r--r-- | base/string_util.cc | 18 | ||||
-rw-r--r-- | base/string_util.h | 2 |
2 files changed, 9 insertions, 11 deletions
diff --git a/base/string_util.cc b/base/string_util.cc index b0ab3a6..a62b905 100644 --- a/base/string_util.cc +++ b/base/string_util.cc @@ -1423,25 +1423,23 @@ void SplitStringAlongWhitespace(const std::string& str, SplitStringAlongWhitespaceT(str, result); } -template<class StringType> -StringType DoReplaceStringPlaceholders(const StringType& format_string, - const std::vector<StringType>& subst, - std::vector<size_t>* offsets) { +template<class FormatStringType, class OutStringType> +OutStringType DoReplaceStringPlaceholders(const FormatStringType& format_string, + const std::vector<OutStringType>& subst, std::vector<size_t>* offsets) { int substitutions = subst.size(); DCHECK(substitutions < 10); int sub_length = 0; - for (typename std::vector<StringType>::const_iterator iter = subst.begin(); - iter != subst.end(); - ++iter) { + for (typename std::vector<OutStringType>::const_iterator iter = subst.begin(); + iter != subst.end(); ++iter) { sub_length += (*iter).length(); } - StringType formatted; + OutStringType formatted; formatted.reserve(format_string.length() + sub_length); std::vector<ReplacementOffset> r_offsets; - for (typename StringType::const_iterator i = format_string.begin(); + for (typename FormatStringType::const_iterator i = format_string.begin(); i != format_string.end(); ++i) { if ('$' == *i) { if (i + 1 != format_string.end()) { @@ -1482,7 +1480,7 @@ string16 ReplaceStringPlaceholders(const string16& format_string, return DoReplaceStringPlaceholders(format_string, subst, offsets); } -std::string ReplaceStringPlaceholders(const std::string& format_string, +std::string ReplaceStringPlaceholders(const base::StringPiece& format_string, const std::vector<std::string>& subst, std::vector<size_t>* offsets) { return DoReplaceStringPlaceholders(format_string, subst, offsets); diff --git a/base/string_util.h b/base/string_util.h index f128f99..1c58e91 100644 --- a/base/string_util.h +++ b/base/string_util.h @@ -550,7 +550,7 @@ string16 ReplaceStringPlaceholders(const string16& format_string, const std::vector<string16>& subst, std::vector<size_t>* offsets); -std::string ReplaceStringPlaceholders(const std::string& format_string, +std::string ReplaceStringPlaceholders(const base::StringPiece& format_string, const std::vector<std::string>& subst, std::vector<size_t>* offsets); |