Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(19)

Side by Side Diff: base/string_util.h

Issue 40106: Make UTF8ToWide take a StringPiece, to avoid copying to a std::string. (Closed)
Patch Set: Created 11 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | base/string_util_icu.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 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 // This file defines utility functions for working with strings. 5 // This file defines utility functions for working with strings.
6 6
7 #ifndef BASE_STRING_UTIL_H_ 7 #ifndef BASE_STRING_UTIL_H_
8 #define BASE_STRING_UTIL_H_ 8 #define BASE_STRING_UTIL_H_
9 9
10 #include <stdarg.h> // va_list 10 #include <stdarg.h> // va_list
11 11
12 #include <string> 12 #include <string>
13 #include <vector> 13 #include <vector>
14 14
15 #include "base/basictypes.h" 15 #include "base/basictypes.h"
16 #include "base/string16.h" 16 #include "base/string16.h"
17 #include "base/string_piece.h" // For implicit conversions.
17 18
18 // Safe standard library wrappers for all platforms. 19 // Safe standard library wrappers for all platforms.
19 20
20 namespace base { 21 namespace base {
21 22
22 // C standard-library functions like "strncasecmp" and "snprintf" that aren't 23 // C standard-library functions like "strncasecmp" and "snprintf" that aren't
23 // cross-platform are provided as "base::strncasecmp", and their prototypes 24 // cross-platform are provided as "base::strncasecmp", and their prototypes
24 // are listed below. These functions are then implemented as inline calls 25 // are listed below. These functions are then implemented as inline calls
25 // to the platform-specific equivalents in the platform-specific headers. 26 // to the platform-specific equivalents in the platform-specific headers.
26 27
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
166 167
167 // These convert between UTF-8, -16, and -32 strings. They are potentially slow, 168 // These convert between UTF-8, -16, and -32 strings. They are potentially slow,
168 // so avoid unnecessary conversions. The low-level versions return a boolean 169 // so avoid unnecessary conversions. The low-level versions return a boolean
169 // indicating whether the conversion was 100% valid. In this case, it will still 170 // indicating whether the conversion was 100% valid. In this case, it will still
170 // do the best it can and put the result in the output buffer. The versions that 171 // do the best it can and put the result in the output buffer. The versions that
171 // return strings ignore this error and just return the best conversion 172 // return strings ignore this error and just return the best conversion
172 // possible. 173 // possible.
173 bool WideToUTF8(const wchar_t* src, size_t src_len, std::string* output); 174 bool WideToUTF8(const wchar_t* src, size_t src_len, std::string* output);
174 std::string WideToUTF8(const std::wstring& wide); 175 std::string WideToUTF8(const std::wstring& wide);
175 bool UTF8ToWide(const char* src, size_t src_len, std::wstring* output); 176 bool UTF8ToWide(const char* src, size_t src_len, std::wstring* output);
176 std::wstring UTF8ToWide(const std::string& utf8); 177 std::wstring UTF8ToWide(const StringPiece& utf8);
177 178
178 bool WideToUTF16(const wchar_t* src, size_t src_len, string16* output); 179 bool WideToUTF16(const wchar_t* src, size_t src_len, string16* output);
179 string16 WideToUTF16(const std::wstring& wide); 180 string16 WideToUTF16(const std::wstring& wide);
180 bool UTF16ToWide(const char16* src, size_t src_len, std::wstring* output); 181 bool UTF16ToWide(const char16* src, size_t src_len, std::wstring* output);
181 std::wstring UTF16ToWide(const string16& utf16); 182 std::wstring UTF16ToWide(const string16& utf16);
182 183
183 bool UTF8ToUTF16(const char* src, size_t src_len, string16* output); 184 bool UTF8ToUTF16(const char* src, size_t src_len, string16* output);
184 string16 UTF8ToUTF16(const std::string& utf8); 185 string16 UTF8ToUTF16(const std::string& utf8);
darin (slow to review) 2009/03/04 16:33:23 this looks like another good place to use this. i
185 bool UTF16ToUTF8(const char16* src, size_t src_len, std::string* output); 186 bool UTF16ToUTF8(const char16* src, size_t src_len, std::string* output);
186 std::string UTF16ToUTF8(const string16& utf16); 187 std::string UTF16ToUTF8(const string16& utf16);
187 188
188 // We are trying to get rid of wstring as much as possible, but it's too big 189 // We are trying to get rid of wstring as much as possible, but it's too big
189 // a mess to do it all at once. These conversions should be used when we 190 // a mess to do it all at once. These conversions should be used when we
190 // really should just be passing a string16 around, but we haven't finished 191 // really should just be passing a string16 around, but we haven't finished
191 // porting whatever module uses wstring and the conversion is being used as a 192 // porting whatever module uses wstring and the conversion is being used as a
192 // stopcock. This makes it easy to grep for the ones that should be removed. 193 // stopcock. This makes it easy to grep for the ones that should be removed.
193 #if defined(OS_WIN) 194 #if defined(OS_WIN)
194 # define WideToUTF16Hack 195 # define WideToUTF16Hack
(...skipping 397 matching lines...) Expand 10 before | Expand all | Expand 10 after
592 // The returned hex string will be in upper case. 593 // The returned hex string will be in upper case.
593 // This function does not check if |size| is within reasonable limits since 594 // This function does not check if |size| is within reasonable limits since
594 // it's written with trusted data in mind. 595 // it's written with trusted data in mind.
595 // If you suspect that the data you want to format might be large, 596 // If you suspect that the data you want to format might be large,
596 // the absolute max size for |size| should be is 597 // the absolute max size for |size| should be is
597 // std::numeric_limits<size_t>::max() / 2 598 // std::numeric_limits<size_t>::max() / 2
598 std::string HexEncode(const void* bytes, size_t size); 599 std::string HexEncode(const void* bytes, size_t size);
599 600
600 601
601 #endif // BASE_STRING_UTIL_H_ 602 #endif // BASE_STRING_UTIL_H_
OLDNEW
« no previous file with comments | « no previous file | base/string_util_icu.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698