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 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
109 } | 109 } |
110 | 110 |
111 const std::wstring& EmptyWString() { | 111 const std::wstring& EmptyWString() { |
112 return EmptyStrings::GetInstance()->ws; | 112 return EmptyStrings::GetInstance()->ws; |
113 } | 113 } |
114 | 114 |
115 const string16& EmptyString16() { | 115 const string16& EmptyString16() { |
116 return EmptyStrings::GetInstance()->s16; | 116 return EmptyStrings::GetInstance()->s16; |
117 } | 117 } |
118 | 118 |
119 } // namespace base | |
120 | |
121 template<typename STR> | 119 template<typename STR> |
122 bool ReplaceCharsT(const STR& input, | 120 bool ReplaceCharsT(const STR& input, |
123 const typename STR::value_type replace_chars[], | 121 const typename STR::value_type replace_chars[], |
124 const STR& replace_with, | 122 const STR& replace_with, |
125 STR* output) { | 123 STR* output) { |
126 bool removed = false; | 124 bool removed = false; |
127 size_t replace_length = replace_with.length(); | 125 size_t replace_length = replace_with.length(); |
128 | 126 |
129 *output = input; | 127 *output = input; |
130 | 128 |
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
223 const char* data = input.data(); | 221 const char* data = input.data(); |
224 | 222 |
225 // Using CBU8, we will move backwards from the truncation point | 223 // Using CBU8, we will move backwards from the truncation point |
226 // to the beginning of the string looking for a valid UTF8 | 224 // to the beginning of the string looking for a valid UTF8 |
227 // character. Once a full UTF8 character is found, we will | 225 // character. Once a full UTF8 character is found, we will |
228 // truncate the string to the end of that character. | 226 // truncate the string to the end of that character. |
229 while (char_index >= 0) { | 227 while (char_index >= 0) { |
230 int32 prev = char_index; | 228 int32 prev = char_index; |
231 uint32 code_point = 0; | 229 uint32 code_point = 0; |
232 CBU8_NEXT(data, char_index, truncation_length, code_point); | 230 CBU8_NEXT(data, char_index, truncation_length, code_point); |
233 if (!base::IsValidCharacter(code_point) || | 231 if (!IsValidCharacter(code_point) || |
234 !base::IsValidCodepoint(code_point)) { | 232 !IsValidCodepoint(code_point)) { |
235 char_index = prev - 1; | 233 char_index = prev - 1; |
236 } else { | 234 } else { |
237 break; | 235 break; |
238 } | 236 } |
239 } | 237 } |
240 | 238 |
241 if (char_index >= 0 ) | 239 if (char_index >= 0 ) |
242 *output = input.substr(0, char_index); | 240 *output = input.substr(0, char_index); |
243 else | 241 else |
244 output->clear(); | 242 output->clear(); |
245 } | 243 } |
246 | 244 |
| 245 } // namespace base |
| 246 |
247 TrimPositions TrimWhitespace(const base::string16& input, | 247 TrimPositions TrimWhitespace(const base::string16& input, |
248 TrimPositions positions, | 248 TrimPositions positions, |
249 base::string16* output) { | 249 base::string16* output) { |
250 return TrimStringT(input, base::kWhitespaceUTF16, positions, output); | 250 return base::TrimStringT(input, base::kWhitespaceUTF16, positions, output); |
251 } | 251 } |
252 | 252 |
253 TrimPositions TrimWhitespaceASCII(const std::string& input, | 253 TrimPositions TrimWhitespaceASCII(const std::string& input, |
254 TrimPositions positions, | 254 TrimPositions positions, |
255 std::string* output) { | 255 std::string* output) { |
256 return TrimStringT(input, base::kWhitespaceASCII, positions, output); | 256 return base::TrimStringT(input, base::kWhitespaceASCII, positions, output); |
257 } | 257 } |
258 | 258 |
259 // This function is only for backward-compatibility. | 259 // This function is only for backward-compatibility. |
260 // To be removed when all callers are updated. | 260 // To be removed when all callers are updated. |
261 TrimPositions TrimWhitespace(const std::string& input, | 261 TrimPositions TrimWhitespace(const std::string& input, |
262 TrimPositions positions, | 262 TrimPositions positions, |
263 std::string* output) { | 263 std::string* output) { |
264 return TrimWhitespaceASCII(input, positions, output); | 264 return TrimWhitespaceASCII(input, positions, output); |
265 } | 265 } |
266 | 266 |
(...skipping 661 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
928 } | 928 } |
929 | 929 |
930 } // namespace | 930 } // namespace |
931 | 931 |
932 size_t base::strlcpy(char* dst, const char* src, size_t dst_size) { | 932 size_t base::strlcpy(char* dst, const char* src, size_t dst_size) { |
933 return lcpyT<char>(dst, src, dst_size); | 933 return lcpyT<char>(dst, src, dst_size); |
934 } | 934 } |
935 size_t base::wcslcpy(wchar_t* dst, const wchar_t* src, size_t dst_size) { | 935 size_t base::wcslcpy(wchar_t* dst, const wchar_t* src, size_t dst_size) { |
936 return lcpyT<wchar_t>(dst, src, dst_size); | 936 return lcpyT<wchar_t>(dst, src, dst_size); |
937 } | 937 } |
OLD | NEW |