xref: /aosp_15_r20/external/cronet/net/base/net_string_util.h (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1*6777b538SAndroid Build Coastguard Worker // Copyright 2014 The Chromium Authors
2*6777b538SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
3*6777b538SAndroid Build Coastguard Worker // found in the LICENSE file.
4*6777b538SAndroid Build Coastguard Worker 
5*6777b538SAndroid Build Coastguard Worker #ifndef NET_BASE_NET_STRING_UTIL_H__
6*6777b538SAndroid Build Coastguard Worker #define NET_BASE_NET_STRING_UTIL_H__
7*6777b538SAndroid Build Coastguard Worker 
8*6777b538SAndroid Build Coastguard Worker #include <string>
9*6777b538SAndroid Build Coastguard Worker 
10*6777b538SAndroid Build Coastguard Worker #include "base/strings/string_piece.h"
11*6777b538SAndroid Build Coastguard Worker #include "net/base/net_export.h"
12*6777b538SAndroid Build Coastguard Worker 
13*6777b538SAndroid Build Coastguard Worker // String conversion functions.  By default, they're implemented with ICU, but
14*6777b538SAndroid Build Coastguard Worker // when building with USE_ICU_ALTERNATIVES, they use platform functions instead.
15*6777b538SAndroid Build Coastguard Worker 
16*6777b538SAndroid Build Coastguard Worker namespace net {
17*6777b538SAndroid Build Coastguard Worker 
18*6777b538SAndroid Build Coastguard Worker extern const char* const kCharsetLatin1;
19*6777b538SAndroid Build Coastguard Worker 
20*6777b538SAndroid Build Coastguard Worker // Converts |text| using |charset| to UTF-8, and writes it to |output|.
21*6777b538SAndroid Build Coastguard Worker // On failure, returns false and |output| is cleared.
22*6777b538SAndroid Build Coastguard Worker bool ConvertToUtf8(std::string_view text,
23*6777b538SAndroid Build Coastguard Worker                    const char* charset,
24*6777b538SAndroid Build Coastguard Worker                    std::string* output);
25*6777b538SAndroid Build Coastguard Worker 
26*6777b538SAndroid Build Coastguard Worker // Converts |text| using |charset| to UTF-8, normalizes the result, and writes
27*6777b538SAndroid Build Coastguard Worker // it to |output|.  On failure, returns false and |output| is cleared.
28*6777b538SAndroid Build Coastguard Worker bool ConvertToUtf8AndNormalize(std::string_view text,
29*6777b538SAndroid Build Coastguard Worker                                const char* charset,
30*6777b538SAndroid Build Coastguard Worker                                std::string* output);
31*6777b538SAndroid Build Coastguard Worker 
32*6777b538SAndroid Build Coastguard Worker // Converts |text| using |charset| to UTF-16, and writes it to |output|.
33*6777b538SAndroid Build Coastguard Worker // On failure, returns false and |output| is cleared.
34*6777b538SAndroid Build Coastguard Worker bool ConvertToUTF16(std::string_view text,
35*6777b538SAndroid Build Coastguard Worker                     const char* charset,
36*6777b538SAndroid Build Coastguard Worker                     std::u16string* output);
37*6777b538SAndroid Build Coastguard Worker 
38*6777b538SAndroid Build Coastguard Worker // Converts |text| using |charset| to UTF-16, and writes it to |output|.
39*6777b538SAndroid Build Coastguard Worker // Any characters that can not be converted are replaced with U+FFFD.
40*6777b538SAndroid Build Coastguard Worker bool ConvertToUTF16WithSubstitutions(std::string_view text,
41*6777b538SAndroid Build Coastguard Worker                                      const char* charset,
42*6777b538SAndroid Build Coastguard Worker                                      std::u16string* output);
43*6777b538SAndroid Build Coastguard Worker 
44*6777b538SAndroid Build Coastguard Worker // Converts |str| to uppercase using the default locale, and writes it to
45*6777b538SAndroid Build Coastguard Worker // |output|. On failure returns false and |output| is cleared.
46*6777b538SAndroid Build Coastguard Worker NET_EXPORT_PRIVATE bool ToUpper(std::u16string_view str,
47*6777b538SAndroid Build Coastguard Worker                                 std::u16string* output);
48*6777b538SAndroid Build Coastguard Worker 
49*6777b538SAndroid Build Coastguard Worker }  // namespace net
50*6777b538SAndroid Build Coastguard Worker 
51*6777b538SAndroid Build Coastguard Worker #endif  // NET_BASE_NET_STRING_UTIL_H__
52