| // 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 CRDTP_JSON_H_ |
| #define CRDTP_JSON_H_ |
| |
| #include <memory> |
| #include "export.h" |
| #include "parser_handler.h" |
| |
| namespace 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). |
| CRDTP_EXPORT std::unique_ptr<ParserHandler> NewJSONEncoder( |
| std::vector<uint8_t>* out, |
| Status* status); |
| |
| CRDTP_EXPORT std::unique_ptr<ParserHandler> NewJSONEncoder(std::string* out, |
| Status* status); |
| |
| // ============================================================================= |
| // json::ParseJSON - for receiving streaming parser events for JSON |
| // ============================================================================= |
| |
| CRDTP_EXPORT void ParseJSON(span<uint8_t> chars, ParserHandler* handler); |
| |
| CRDTP_EXPORT void ParseJSON(span<uint16_t> chars, ParserHandler* handler); |
| |
| // ============================================================================= |
| // json::ConvertCBORToJSON, json::ConvertJSONToCBOR - for transcoding |
| // ============================================================================= |
| |
| CRDTP_EXPORT Status ConvertCBORToJSON(span<uint8_t> cbor, std::string* json); |
| |
| CRDTP_EXPORT Status ConvertCBORToJSON(span<uint8_t> cbor, |
| std::vector<uint8_t>* json); |
| |
| CRDTP_EXPORT Status ConvertJSONToCBOR(span<uint8_t> json, |
| std::vector<uint8_t>* cbor); |
| |
| CRDTP_EXPORT Status ConvertJSONToCBOR(span<uint16_t> json, |
| std::vector<uint8_t>* cbor); |
| |
| CRDTP_EXPORT Status ConvertJSONToCBOR(span<uint8_t> json, std::string* cbor); |
| |
| CRDTP_EXPORT Status ConvertJSONToCBOR(span<uint16_t> json, std::string* cbor); |
| } // namespace json |
| } // namespace crdtp |
| |
| #endif // CRDTP_JSON_H_ |