| // Copyright 2019 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 "json_platform.h" |
| |
| #include <sstream> |
| |
| // This is a reference implementation using the C++ standard library. |
| // Downstream projects may invoke their preferred routines instead, |
| // by modifying / replacing this file to call them. |
| // Examples of optimized string<->number conversion libraries: |
| // - https://github.com/google/double-conversion |
| // - https://github.com/abseil/abseil-cpp/blob/master/absl/strings/numbers.h |
| namespace crdtp { |
| namespace json { |
| namespace platform { |
| bool StrToD(const char* str, double* result) { |
| #if SB_IS(MODULAR) |
| #error "The std::locale::classic() is not supported for Evergreen. Please use base::StringToDouble()." |
| #endif |
| std::istringstream is(str); |
| is.imbue(std::locale::classic()); |
| is >> *result; |
| return !is.fail() && is.eof(); |
| } |
| |
| std::string DToStr(double value) { |
| #if SB_IS(MODULAR) |
| #error "The std::locale::classic() is not supported for Evergreen. Please use base::NumberToString()." |
| #endif |
| std::stringstream ss; |
| ss.imbue(std::locale::classic()); |
| ss << value; |
| return ss.str(); |
| } |
| } // namespace platform |
| } // namespace json |
| } // namespace crdtp |