| // 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 <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.push_back(c); |
| } |
| |
| void String16Builder::append(char c) |
| { |
| 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 |