#pragma once #include #include #include #include namespace saw { namespace encode { struct Json {}; } template 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 {}; } }; }