OLD | NEW |
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 #include "base/string_util.h" | 5 #include "base/string_util.h" |
6 | 6 |
7 #include "build/build_config.h" | 7 #include "build/build_config.h" |
8 | 8 |
9 #include <ctype.h> | 9 #include <ctype.h> |
10 #include <errno.h> | 10 #include <errno.h> |
(...skipping 19 matching lines...) Expand all Loading... |
30 // Force the singleton used by Empty[W]String[16] to be a unique type. This | 30 // Force the singleton used by Empty[W]String[16] to be a unique type. This |
31 // prevents other code that might accidentally use Singleton<string> from | 31 // prevents other code that might accidentally use Singleton<string> from |
32 // getting our internal one. | 32 // getting our internal one. |
33 struct EmptyStrings { | 33 struct EmptyStrings { |
34 EmptyStrings() {} | 34 EmptyStrings() {} |
35 const std::string s; | 35 const std::string s; |
36 const std::wstring ws; | 36 const std::wstring ws; |
37 const string16 s16; | 37 const string16 s16; |
38 }; | 38 }; |
39 | 39 |
40 // Hack to convert any char-like type to its unsigned counterpart. | |
41 // For example, it will convert char, signed char and unsigned char to unsigned | |
42 // char. | |
43 template<typename T> | |
44 struct ToUnsigned { | |
45 typedef T Unsigned; | |
46 }; | |
47 | |
48 template<> | |
49 struct ToUnsigned<char> { | |
50 typedef unsigned char Unsigned; | |
51 }; | |
52 template<> | |
53 struct ToUnsigned<signed char> { | |
54 typedef unsigned char Unsigned; | |
55 }; | |
56 template<> | |
57 struct ToUnsigned<wchar_t> { | |
58 #if defined(WCHAR_T_IS_UTF16) | |
59 typedef unsigned short Unsigned; | |
60 #elif defined(WCHAR_T_IS_UTF32) | |
61 typedef uint32 Unsigned; | |
62 #endif | |
63 }; | |
64 template<> | |
65 struct ToUnsigned<short> { | |
66 typedef unsigned short Unsigned; | |
67 }; | |
68 | |
69 // Used by ReplaceStringPlaceholders to track the position in the string of | 40 // Used by ReplaceStringPlaceholders to track the position in the string of |
70 // replaced parameters. | 41 // replaced parameters. |
71 struct ReplacementOffset { | 42 struct ReplacementOffset { |
72 ReplacementOffset(int parameter, size_t offset) | 43 ReplacementOffset(int parameter, size_t offset) |
73 : parameter(parameter), | 44 : parameter(parameter), |
74 offset(offset) {} | 45 offset(offset) {} |
75 | 46 |
76 // Index of the parameter. | 47 // Index of the parameter. |
77 int parameter; | 48 int parameter; |
78 | 49 |
(...skipping 1584 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1663 // Each input byte creates two output hex characters. | 1634 // Each input byte creates two output hex characters. |
1664 std::string ret(size * 2, '\0'); | 1635 std::string ret(size * 2, '\0'); |
1665 | 1636 |
1666 for (size_t i = 0; i < size; ++i) { | 1637 for (size_t i = 0; i < size; ++i) { |
1667 char b = reinterpret_cast<const char*>(bytes)[i]; | 1638 char b = reinterpret_cast<const char*>(bytes)[i]; |
1668 ret[(i * 2)] = kHexChars[(b >> 4) & 0xf]; | 1639 ret[(i * 2)] = kHexChars[(b >> 4) & 0xf]; |
1669 ret[(i * 2) + 1] = kHexChars[b & 0xf]; | 1640 ret[(i * 2) + 1] = kHexChars[b & 0xf]; |
1670 } | 1641 } |
1671 return ret; | 1642 return ret; |
1672 } | 1643 } |
OLD | NEW |