| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/strings/string_util.h" | 5 #include "base/strings/string_util.h" |
| 6 | 6 |
| 7 #include <ctype.h> | 7 #include <ctype.h> |
| 8 #include <errno.h> | 8 #include <errno.h> |
| 9 #include <math.h> | 9 #include <math.h> |
| 10 #include <stdarg.h> | 10 #include <stdarg.h> |
| (...skipping 599 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 610 std::string JoinString(const std::vector<std::string>& parts, | 610 std::string JoinString(const std::vector<std::string>& parts, |
| 611 const std::string& separator) { | 611 const std::string& separator) { |
| 612 return JoinStringT(parts, separator); | 612 return JoinStringT(parts, separator); |
| 613 } | 613 } |
| 614 | 614 |
| 615 string16 JoinString(const std::vector<string16>& parts, | 615 string16 JoinString(const std::vector<string16>& parts, |
| 616 const string16& separator) { | 616 const string16& separator) { |
| 617 return JoinStringT(parts, separator); | 617 return JoinStringT(parts, separator); |
| 618 } | 618 } |
| 619 | 619 |
| 620 static std::string JoinStringKeyValuePair( |
| 621 const StringPairs::value_type& key_value, |
| 622 char delimiter) { |
| 623 return key_value.first + delimiter + key_value.second; |
| 624 } |
| 625 |
| 626 std::string JoinStringKeyValuePairs(const StringPairs& pairs, |
| 627 char key_value_delimiter, |
| 628 char key_value_pair_delimiter) { |
| 629 if (pairs.empty()) |
| 630 return std::string(); |
| 631 |
| 632 StringPairs::const_iterator it = pairs.begin(); |
| 633 std::string result = JoinStringKeyValuePair(*it, key_value_delimiter); |
| 634 ++it; |
| 635 |
| 636 for (; it != pairs.end(); ++it) { |
| 637 result += key_value_pair_delimiter; |
| 638 result += JoinStringKeyValuePair(*it, key_value_delimiter); |
| 639 } |
| 640 |
| 641 return result; |
| 642 } |
| 643 |
| 620 template<class FormatStringType, class OutStringType> | 644 template<class FormatStringType, class OutStringType> |
| 621 OutStringType DoReplaceStringPlaceholders(const FormatStringType& format_string, | 645 OutStringType DoReplaceStringPlaceholders(const FormatStringType& format_string, |
| 622 const std::vector<OutStringType>& subst, std::vector<size_t>* offsets) { | 646 const std::vector<OutStringType>& subst, std::vector<size_t>* offsets) { |
| 623 size_t substitutions = subst.size(); | 647 size_t substitutions = subst.size(); |
| 624 | 648 |
| 625 size_t sub_length = 0; | 649 size_t sub_length = 0; |
| 626 for (typename std::vector<OutStringType>::const_iterator iter = subst.begin(); | 650 for (typename std::vector<OutStringType>::const_iterator iter = subst.begin(); |
| 627 iter != subst.end(); ++iter) { | 651 iter != subst.end(); ++iter) { |
| 628 sub_length += iter->length(); | 652 sub_length += iter->length(); |
| 629 } | 653 } |
| (...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 883 } | 907 } |
| 884 | 908 |
| 885 } // namespace | 909 } // namespace |
| 886 | 910 |
| 887 size_t base::strlcpy(char* dst, const char* src, size_t dst_size) { | 911 size_t base::strlcpy(char* dst, const char* src, size_t dst_size) { |
| 888 return lcpyT<char>(dst, src, dst_size); | 912 return lcpyT<char>(dst, src, dst_size); |
| 889 } | 913 } |
| 890 size_t base::wcslcpy(wchar_t* dst, const wchar_t* src, size_t dst_size) { | 914 size_t base::wcslcpy(wchar_t* dst, const wchar_t* src, size_t dst_size) { |
| 891 return lcpyT<wchar_t>(dst, src, dst_size); | 915 return lcpyT<wchar_t>(dst, src, dst_size); |
| 892 } | 916 } |
| OLD | NEW |