#include "json.h"
#include <algorithm>
#include <cassert>
#include <cmath>
#include <cstring>
#include <limits>
#include <stack>
#include "cbor.h"
#include "json_platform.h"
namespace crdtp {
namespace json {
namespace {
template <typename C>
void PrintHex(uint16_t value, C* out) { … }
enum class Container { … };
class State { … };
constexpr char kBase64Table[] = …;
template <typename C>
void Base64Encode(const span<uint8_t>& in, C* out) { … }
template <typename C>
class JSONEncoder : public ParserHandler { … };
}
std::unique_ptr<ParserHandler> NewJSONEncoder(std::vector<uint8_t>* out,
Status* status) { … }
std::unique_ptr<ParserHandler> NewJSONEncoder(std::string* out,
Status* status) { … }
namespace {
const int kStackLimit = …;
enum Token { … };
const char* const kNullString = …;
const char* const kTrueString = …;
const char* const kFalseString = …;
template <typename Char>
class JsonParser { … };
}
void ParseJSON(span<uint8_t> chars, ParserHandler* handler) { … }
void ParseJSON(span<uint16_t> chars, ParserHandler* handler) { … }
template <typename C>
Status ConvertCBORToJSONTmpl(span<uint8_t> cbor, C* json) { … }
Status ConvertCBORToJSON(span<uint8_t> cbor, std::vector<uint8_t>* json) { … }
Status ConvertCBORToJSON(span<uint8_t> cbor, std::string* json) { … }
template <typename T>
Status ConvertJSONToCBORTmpl(span<T> json, std::vector<uint8_t>* cbor) { … }
Status ConvertJSONToCBOR(span<uint8_t> json, std::vector<uint8_t>* cbor) { … }
Status ConvertJSONToCBOR(span<uint16_t> json, std::vector<uint8_t>* cbor) { … }
}
}