15#include "../../third_party/inspector_protocol/crdtp/cbor.h"
24bool isASCII(
UChar c) {
return !(c & ~0x7F); }
26bool isSpaceOrNewLine(
UChar c) {
27 return isASCII(c) && c <=
' ' && (c ==
' ' || (c <= 0xD && c >= 0x9));
30int64_t charactersToInteger(
const uint16_t* characters,
size_t length,
32 std::vector<char> buffer;
33 buffer.reserve(length + 1);
35 if (!isASCII(characters[
i])) {
39 buffer.push_back(
static_cast<char>(characters[
i]));
41 buffer.push_back(
'\0');
45 static_cast<int64_t
>(std::strtoll(buffer.data(), &endptr, 10));
46 if (ok) *ok = !(*endptr);
52 : m_impl(characters, size) {}
54 : m_impl(reinterpret_cast<const
UChar*>(characters), size) {}
62 : m_impl(characters, characters + size) {}
64 :
String16(string.data(), string.length()) {}
80 const size_t kBufferSize = 50;
81 char buffer[kBufferSize];
83 v8::base::OS::SNPrintF(buffer, kBufferSize,
"%Iu", number);
85 v8::base::OS::SNPrintF(buffer, kBufferSize,
"%zu", number);
93 v8::base::OS::SNPrintF(buffer,
arraysize(buffer),
"%" PRId64
"", number);
109 std::string_view str =
121 *ok = result <= std::numeric_limits<int>::max() &&
122 result >= std::numeric_limits<int>::min();
124 return static_cast<int>(
result);
128 if (!
length())
return std::make_pair(0, 0);
137 if (
start >
end)
return std::make_pair(0, 0);
147 if (offsetAndLength.second == 0)
return String16();
148 if (offsetAndLength.first == 0 && offsetAndLength.second == length() - 1) {
151 return substring(offsetAndLength.first, offsetAndLength.second);
158 s.characters16() + s.length());
177 constexpr int kBufferSize = 11;
178 char buffer[kBufferSize];
179 int chars = v8::base::OS::SNPrintF(buffer, kBufferSize,
"%d", number);
185 constexpr int kBufferSize = 20;
186 char buffer[kBufferSize];
187#if defined(V8_OS_WIN)
188 int chars = v8::base::OS::SNPrintF(buffer, kBufferSize,
"%Iu", number);
190 int chars = v8::base::OS::SNPrintF(buffer, kBufferSize,
"%zu", number);
197 constexpr int kBufferSize = 17;
198 char buffer[kBufferSize];
200 v8::base::OS::SNPrintF(buffer, kBufferSize,
"%016" PRIx64, number);
206 constexpr int kBufferSize = 9;
207 char buffer[kBufferSize];
208 int chars = v8::base::OS::SNPrintF(buffer, kBufferSize,
"%08" PRIx32, number);
214 constexpr int kBufferSize = 3;
215 char buffer[kBufferSize];
216 int chars = v8::base::OS::SNPrintF(buffer, kBufferSize,
"%02" PRIx8, number);
234#ifdef V8_TARGET_BIG_ENDIAN
239 const UChar utf16be_char =
240 stringStart[
i] << 8 | (stringStart[
i] >> 8 & 0x00FF);
241 builder.
append(utf16be_char);
246 return String16(stringStart, length);
void append(const String16 &)
std::vector< UChar > m_buffer
void reserveCapacity(size_t)
void appendUnsignedAsHex(uint64_t)
static V8_EXPORT String16 fromUTF8(const char *stringStart, size_t length)
String16 stripWhiteSpace() const
static String16 fromInteger(int)
int toInteger(bool *ok=nullptr) const
static String16 fromInteger64(int64_t)
static String16 fromDouble(double)
static V8_EXPORT String16 fromUTF16LE(const UChar *stringStart, size_t length)
std::basic_string< UChar > m_impl
int64_t toInteger64(bool *ok=nullptr) const
V8_EXPORT std::string utf8() const
const uint16_t * characters16() const
std::pair< size_t, size_t > getTrimmedOffsetAndLength() const
ZoneVector< RpoNumber > & result
constexpr Vector< T > ArrayVector(T(&arr)[N])
constexpr int kDoubleToPrecisionMaxChars
std::string_view IntToStringView(int n, base::Vector< char > buffer)
std::string_view DoubleToStringView(double v, base::Vector< char > buffer)
std::string_view DoubleToPrecisionStringView(double value, int p, base::Vector< char > buffer)
std::basic_string< UChar > UTF8ToUTF16(const char *stringStart, size_t length)
std::string UTF16ToUTF8(const UChar *stringStart, size_t length)
#define DCHECK_LE(v1, v2)