Chromium Code Reviews| Index: third_party/WebKit/Source/platform/inspector_protocol/String16.cpp | 
| diff --git a/third_party/WebKit/Source/platform/inspector_protocol/String16.cpp b/third_party/WebKit/Source/platform/inspector_protocol/String16.cpp | 
| new file mode 100644 | 
| index 0000000000000000000000000000000000000000..3a7167f5fa18dcb102d8bbddf61740b64e3bcb23 | 
| --- /dev/null | 
| +++ b/third_party/WebKit/Source/platform/inspector_protocol/String16.cpp | 
| @@ -0,0 +1,101 @@ | 
| +// Copyright 2016 The Chromium Authors. All rights reserved. | 
| +// Use of this source code is governed by a BSD-style license that can be | 
| +// found in the LICENSE file. | 
| + | 
| +#include "platform/inspector_protocol/String16.h" | 
| + | 
| +#include <cstdlib> | 
| +#include <cstring> | 
| +#include <string> | 
| + | 
| +namespace blink { | 
| +namespace protocol { | 
| + | 
| +namespace internal { | 
| + | 
| +void intToStr(int number, char* buffer, size_t length) | 
| +{ | 
| + std::snprintf(buffer, length, "%d", number); | 
| +} | 
| + | 
| +void doubleToStr(double number, char* buffer, size_t length) | 
| +{ | 
| + std::snprintf(buffer, length, "%f", number); | 
| +} | 
| + | 
| +void doubleToStr3(double number, char* buffer, size_t length) | 
| +{ | 
| + std::snprintf(buffer, length, "%.3g", number); | 
| +} | 
| + | 
| +void doubleToStr6(double number, char* buffer, size_t length) | 
| +{ | 
| + std::snprintf(buffer, length, "%.6g", number); | 
| +} | 
| + | 
| +double strToDouble(const char* buffer, bool* ok) | 
| +{ | 
| + char* endptr; | 
| + double result = std::strtod(buffer, &endptr); | 
| + if (ok) | 
| + *ok = !(*endptr); | 
| + return result; | 
| +} | 
| + | 
| +int strToInt(const char* buffer, bool* ok) | 
| +{ | 
| + char* endptr; | 
| + int result = std::strtol(buffer, &endptr, 10); | 
| + if (ok) | 
| + *ok = !(*endptr); | 
| + return result; | 
| +} | 
| + | 
| +} // namespace internal | 
| + | 
| +String16Builder::String16Builder() | 
| +{ | 
| +} | 
| + | 
| +void String16Builder::append(const String16& s) | 
| +{ | 
| + m_buffer.insert(m_buffer.end(), s.characters16(), s.characters16() + s.length()); | 
| +} | 
| + | 
| +void String16Builder::append(UChar c) | 
| +{ | 
| + m_buffer.insert(m_buffer.end(), c); | 
| 
 
caseq
2016/08/13 00:28:53
m_buffer.push_back(c)
 
dgozman
2016/08/13 04:49:59
Done.
 
 | 
| +} | 
| + | 
| +void String16Builder::append(char c) | 
| 
 
caseq
2016/08/13 00:28:53
I wonder if you really need the overload, wouldn't
 
dgozman
2016/08/13 04:49:59
Just to be sure. WTF has one.
 
 | 
| +{ | 
| + UChar u = c; | 
| + m_buffer.push_back(u); | 
| +} | 
| + | 
| +void String16Builder::append(const UChar* characters, size_t length) | 
| +{ | 
| + m_buffer.insert(m_buffer.end(), characters, characters + length); | 
| +} | 
| + | 
| +void String16Builder::append(const char* characters, size_t length) | 
| +{ | 
| + m_buffer.reserve(m_buffer.size() + length); | 
| + for (size_t i = 0; i < length; ++i, ++characters) { | 
| + UChar u = *characters; | 
| + m_buffer.push_back(u); | 
| + } | 
| +} | 
| + | 
| +String16 String16Builder::toString() | 
| +{ | 
| + return String16(m_buffer.data(), m_buffer.size()); | 
| +} | 
| + | 
| +void String16Builder::reserveCapacity(size_t capacity) | 
| +{ | 
| + m_buffer.reserve(capacity); | 
| +} | 
| + | 
| +} // namespace protocol | 
| +} // namespace blink |