summaryrefslogtreecommitdiffstats
path: root/base
diff options
context:
space:
mode:
authortony@chromium.org <tony@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-10-29 19:48:54 +0000
committertony@chromium.org <tony@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-10-29 19:48:54 +0000
commit08daf0542dc5743a82bf55e8684bf1625ad7d997 (patch)
treeff4c2a2199746fff3c6d29e46d32e7e0e9e5ced9 /base
parentaece9ccd4c38dca6daad04c94d1cc96677e1fbac (diff)
downloadchromium_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.cc18
-rw-r--r--base/string_util.h2
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);