| 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 790 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 801 } | 801 } |
| 802 | 802 |
| 803 void ReplaceSubstringsAfterOffset(std::string* str, | 803 void ReplaceSubstringsAfterOffset(std::string* str, |
| 804 size_t start_offset, | 804 size_t start_offset, |
| 805 StringPiece find_this, | 805 StringPiece find_this, |
| 806 StringPiece replace_with) { | 806 StringPiece replace_with) { |
| 807 DoReplaceSubstringsAfterOffset<std::string>( | 807 DoReplaceSubstringsAfterOffset<std::string>( |
| 808 str, start_offset, find_this, replace_with, true); // Replace all. | 808 str, start_offset, find_this, replace_with, true); // Replace all. |
| 809 } | 809 } |
| 810 | 810 |
| 811 template <class string_type> |
| 812 inline typename string_type::value_type* WriteIntoT(string_type* str, |
| 813 size_t length_with_null) { |
| 814 DCHECK_GT(length_with_null, 1u); |
| 815 str->reserve(length_with_null); |
| 816 str->resize(length_with_null - 1); |
| 817 return &((*str)[0]); |
| 818 } |
| 819 |
| 820 char* WriteInto(std::string* str, size_t length_with_null) { |
| 821 return WriteIntoT(str, length_with_null); |
| 822 } |
| 823 |
| 824 char16* WriteInto(base::string16* str, size_t length_with_null) { |
| 825 return WriteIntoT(str, length_with_null); |
| 826 } |
| 827 |
| 811 } // namespace base | 828 } // namespace base |
| 812 | 829 |
| 813 template<typename STR> | 830 template<typename STR> |
| 814 static STR JoinStringT(const std::vector<STR>& parts, const STR& sep) { | 831 static STR JoinStringT(const std::vector<STR>& parts, const STR& sep) { |
| 815 if (parts.empty()) | 832 if (parts.empty()) |
| 816 return STR(); | 833 return STR(); |
| 817 | 834 |
| 818 STR result(parts[0]); | 835 STR result(parts[0]); |
| 819 typename std::vector<STR>::const_iterator iter = parts.begin(); | 836 typename std::vector<STR>::const_iterator iter = parts.begin(); |
| 820 ++iter; | 837 ++iter; |
| (...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 956 } | 973 } |
| 957 | 974 |
| 958 } // namespace | 975 } // namespace |
| 959 | 976 |
| 960 size_t base::strlcpy(char* dst, const char* src, size_t dst_size) { | 977 size_t base::strlcpy(char* dst, const char* src, size_t dst_size) { |
| 961 return lcpyT<char>(dst, src, dst_size); | 978 return lcpyT<char>(dst, src, dst_size); |
| 962 } | 979 } |
| 963 size_t base::wcslcpy(wchar_t* dst, const wchar_t* src, size_t dst_size) { | 980 size_t base::wcslcpy(wchar_t* dst, const wchar_t* src, size_t dst_size) { |
| 964 return lcpyT<wchar_t>(dst, src, dst_size); | 981 return lcpyT<wchar_t>(dst, src, dst_size); |
| 965 } | 982 } |
| OLD | NEW |