diff options
Diffstat (limited to 'src/codec-json')
-rw-r--r-- | src/codec-json/json.h | 73 |
1 files changed, 71 insertions, 2 deletions
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 <forstio/core/buffer.h> +#include <forstio/core/common.h> +#include <forstio/codec/data.h> + +#include <algorithm> + namespace saw { -namespace encoded { +namespace encode { struct Json {}; } template<typename Schema> -class codec<Schema, Json> { +class data<Schema, encode::Json> { +private: + own<buffer> 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<typename Schema> +class codec<Schema, encode::Json> { +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 <typename FromEncoding> + ErrorOr<void> encode(const data<Schema, FromEncoding>& from_encode, data<Schema, encode::Json>& to_encode){ + // To Be encoded + + + return Void {}; + } + template <typename ToEncoding> + ErrorOr<void> decode(const data<Schema, encode::Json>& from_decode, data<Schema, ToEncoding>& to_decode){ + return Void {}; + } }; } |