// 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.

#ifndef V8_CRDTP_JSON_H_
#define V8_CRDTP_JSON_H_

#include <memory>
#include <vector>
#include "export.h"
#include "parser_handler.h"

namespace v8_crdtp {
namespace json {
// =============================================================================
// json::NewJSONEncoder - for encoding streaming parser events as JSON
// =============================================================================

// Returns a handler object which will write ascii characters to |out|.
// |status->ok()| will be false iff the handler routine HandleError() is called.
// In that case, we'll stop emitting output.
// Except for calling the HandleError routine at any time, the client
// code must call the Handle* methods in an order in which they'd occur
// in valid JSON; otherwise we may crash (the code uses assert).
std::unique_ptr<ParserHandler> NewJSONEncoder(std::vector<uint8_t>* out,
                                              Status* status);

std::unique_ptr<ParserHandler> NewJSONEncoder(std::string* out, Status* status);

// =============================================================================
// json::ParseJSON - for receiving streaming parser events for JSON
// =============================================================================

void ParseJSON(span<uint8_t> chars, ParserHandler* handler);

void ParseJSON(span<uint16_t> chars, ParserHandler* handler);

// =============================================================================
// json::ConvertCBORToJSON, json::ConvertJSONToCBOR - for transcoding
// =============================================================================

Status ConvertCBORToJSON(span<uint8_t> cbor, std::string* json);

Status ConvertCBORToJSON(span<uint8_t> cbor, std::vector<uint8_t>* json);

Status ConvertJSONToCBOR(span<uint8_t> json, std::vector<uint8_t>* cbor);

Status ConvertJSONToCBOR(span<uint16_t> json, std::vector<uint8_t>* cbor);
}  // namespace json
}  // namespace v8_crdtp

#endif  // V8_CRDTP_JSON_H_
