From 07fd10c0584c7f0827dfd3ff8319e4cb174e5973 Mon Sep 17 00:00:00 2001 From: "Claudius \"keldu\" Holeksa" Date: Mon, 5 Jun 2023 08:41:27 +0200 Subject: codec-json, c++: Initial ideas for json codec. Technically We do have to transcode and the language we are transcoding from requires to have some restriction rules as an argument. --- src/codec-json/json.h | 73 +++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 71 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/codec-json/json.h b/src/codec-json/json.h index 2c5b83e..0ba7a2d 100644 --- a/src/codec-json/json.h +++ b/src/codec-json/json.h @@ -1,12 +1,81 @@ #pragma once +#include +#include +#include + +#include + namespace saw { -namespace encoded { +namespace encode { struct Json {}; } template -class codec { +class data { +private: + own buffer_; +public: + data() = default; + + void reserve(std::size_t i){ + buffer_.reserve(i); + } + + void concat(int8_t c){ + buffer_.emplace_back(c); + } + + std::size_t get_size() const { + return buffer_.size(); + } + + int8_t& at(std::size_t i){ + return buffer_.at(i); + } + + const int8_t& at(std::size_t i) const { + return buffer_.at(i); + } +}; + +/** + * Codec class for json + */ +template +class codec { +public: + struct config { + size_t depth = 16; + size_t length = 1024; + }; +private: + config cfg_; +public: + /** + * Default constructor + */ + config(){} + + /** + * Constructor + */ + codec(config cfg__):cfg_{std::move(cfg__)}{} + + SAW_FORBID_COPY(codec); + SAW_DEFAULT_MOVE(codec); + + template + ErrorOr encode(const data& from_encode, data& to_encode){ + // To Be encoded + + + return Void {}; + } + template + ErrorOr decode(const data& from_decode, data& to_decode){ + return Void {}; + } }; } -- cgit v1.2.3