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

Side by Side Diff: third_party/WebKit/Source/platform/inspector_protocol/String16_h.template

Issue 2260233002: [DevTools] Migrate v8_inspector/public from String16 to String{View,Buffer}. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: styling Created 4 years, 3 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
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 #ifndef String16_h 5 #ifndef String16_h
6 #define String16_h 6 #define String16_h
7 7
8 //#include "Collections.h" 8 //#include "Collections.h"
9 //#include "Platform.h" 9 //#include "Platform.h"
10 #include "{{config.class_export.header}}" 10 #include "{{config.class_export.header}}"
11 11
12 #include <vector> 12 #include <vector>
13 13
14 namespace blink { 14 namespace blink {
15 namespace protocol { 15 namespace protocol {
16 16
17 namespace internal { 17 namespace internal {
18 {{config.class_export.macro}} void intToStr(int, char*, size_t); 18 {{config.class_export.macro}} void intToStr(int, char*, size_t);
19 {{config.class_export.macro}} void doubleToStr(double, char*, size_t); 19 {{config.class_export.macro}} void doubleToStr(double, char*, size_t);
20 {{config.class_export.macro}} void doubleToStr3(double, char*, size_t); 20 {{config.class_export.macro}} void doubleToStr3(double, char*, size_t);
21 {{config.class_export.macro}} void doubleToStr6(double, char*, size_t); 21 {{config.class_export.macro}} void doubleToStr6(double, char*, size_t);
22 {{config.class_export.macro}} double strToDouble(const char*, bool*);
23 {{config.class_export.macro}} int strToInt(const char*, bool*); 22 {{config.class_export.macro}} int strToInt(const char*, bool*);
24 } // namespace internal 23 } // namespace internal
25 24
26 template <typename T, typename C> 25 template <typename T, typename C>
27 class {{config.class_export.macro}} String16Base { 26 class {{config.class_export.macro}} String16Base {
28 public: 27 public:
29 static bool isASCII(C c) 28 static bool isASCII(C c)
30 { 29 {
31 return !(c & ~0x7F); 30 return !(c & ~0x7F);
32 } 31 }
(...skipping 24 matching lines...) Expand all
57 return T(buffer); 56 return T(buffer);
58 } 57 }
59 58
60 static T fromDoublePrecision6(double number) 59 static T fromDoublePrecision6(double number)
61 { 60 {
62 char buffer[100]; 61 char buffer[100];
63 internal::doubleToStr6(number, buffer, PROTOCOL_ARRAY_LENGTH(buffer)); 62 internal::doubleToStr6(number, buffer, PROTOCOL_ARRAY_LENGTH(buffer));
64 return T(buffer); 63 return T(buffer);
65 } 64 }
66 65
67 static double charactersToDouble(const C* characters, size_t length, bool* o k = nullptr)
68 {
69 std::vector<char> buffer;
70 buffer.reserve(length + 1);
71 for (size_t i = 0; i < length; ++i) {
72 if (!isASCII(characters[i])) {
73 if (ok)
74 *ok = false;
75 return 0;
76 }
77 buffer.push_back(static_cast<char>(characters[i]));
78 }
79 buffer.push_back('\0');
80 return internal::strToDouble(buffer.data(), ok);
81 }
82
83 static int charactersToInteger(const C* characters, size_t length, bool* ok = nullptr) 66 static int charactersToInteger(const C* characters, size_t length, bool* ok = nullptr)
84 { 67 {
85 std::vector<char> buffer; 68 std::vector<char> buffer;
86 buffer.reserve(length + 1); 69 buffer.reserve(length + 1);
87 for (size_t i = 0; i < length; ++i) { 70 for (size_t i = 0; i < length; ++i) {
88 if (!isASCII(characters[i])) { 71 if (!isASCII(characters[i])) {
89 if (ok) 72 if (ok)
90 *ok = false; 73 *ok = false;
91 return 0; 74 return 0;
92 } 75 }
93 buffer.push_back(static_cast<char>(characters[i])); 76 buffer.push_back(static_cast<char>(characters[i]));
94 } 77 }
95 buffer.push_back('\0'); 78 buffer.push_back('\0');
96 return internal::strToInt(buffer.data(), ok); 79 return internal::strToInt(buffer.data(), ok);
97 } 80 }
98 81
99 double toDouble(bool* ok = nullptr) const
100 {
101 const C* characters = static_cast<const T&>(*this).characters16();
102 size_t length = static_cast<const T&>(*this).length();
103 return charactersToDouble(characters, length, ok);
104 }
105
106 int toInteger(bool* ok = nullptr) const 82 int toInteger(bool* ok = nullptr) const
107 { 83 {
108 const C* characters = static_cast<const T&>(*this).characters16(); 84 const C* characters = static_cast<const T&>(*this).characters16();
109 size_t length = static_cast<const T&>(*this).length(); 85 size_t length = static_cast<const T&>(*this).length();
110 return charactersToInteger(characters, length, ok); 86 return charactersToInteger(characters, length, ok);
111 } 87 }
112 88
113 T stripWhiteSpace() const 89 T stripWhiteSpace() const
114 { 90 {
115 size_t length = static_cast<const T&>(*this).length(); 91 size_t length = static_cast<const T&>(*this).length();
(...skipping 13 matching lines...) Expand all
129 return T(); 105 return T();
130 106
131 // skip white space from end 107 // skip white space from end
132 while (end && isSpaceOrNewLine(characters[end])) 108 while (end && isSpaceOrNewLine(characters[end]))
133 --end; 109 --end;
134 110
135 if (!start && end == length - 1) 111 if (!start && end == length - 1)
136 return T(static_cast<const T&>(*this)); 112 return T(static_cast<const T&>(*this));
137 return T(characters + start, end + 1 - start); 113 return T(characters + start, end + 1 - start);
138 } 114 }
139
140 bool startsWith(const char* prefix) const
141 {
142 const C* characters = static_cast<const T&>(*this).characters16();
143 size_t length = static_cast<const T&>(*this).length();
144 for (size_t i = 0, j = 0; prefix[j] && i < length; ++i, ++j) {
145 if (characters[i] != prefix[j])
146 return false;
147 }
148 return true;
149 }
150 }; 115 };
151 116
152 } // namespace protocol 117 } // namespace protocol
153 } // namespace blink 118 } // namespace blink
154 119
155 #include "{{config.lib.string16_header}}" 120 #include "{{config.lib.string16_header}}"
156 121
157 namespace blink { 122 namespace blink {
158 namespace protocol { 123 namespace protocol {
159 124
(...skipping 12 matching lines...) Expand all
172 std::vector<UChar> m_buffer; 137 std::vector<UChar> m_buffer;
173 }; 138 };
174 139
175 } // namespace protocol 140 } // namespace protocol
176 } // namespace blink 141 } // namespace blink
177 142
178 using String16 = blink::protocol::String16; 143 using String16 = blink::protocol::String16;
179 using String16Builder = blink::protocol::String16Builder; 144 using String16Builder = blink::protocol::String16Builder;
180 145
181 #endif // !defined(String16_h) 146 #endif // !defined(String16_h)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698