// Copyright 2019 The V8 Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// This file is V8 specific. It's not rolled from the upstream project.

#include "json_platform.h"

#include <cmath>
#include "../../../src/numbers/conversions.h"
#include "../../../src/utils/vector.h"

namespace v8_crdtp {
namespace json {
namespace platform {
// Parses |str| into |result|. Returns false iff there are
// leftover characters or parsing errors.
bool StrToD(const char* str, double* result) {
  *result = v8::internal::StringToDouble(str, v8::internal::NO_FLAGS);
  return std::isfinite(*result);
}

// Prints |value| in a format suitable for JSON.
std::string DToStr(double value) {
  v8::internal::ScopedVector<char> buffer(
      v8::internal::kDoubleToCStringMinBufferSize);
  const char* str = v8::internal::DoubleToCString(value, buffer);
  return (str == nullptr) ? "" : std::string(str);
}
}  // namespace platform
}  // namespace json
}  // namespace v8_crdtp