#pragma once #include "data.h" namespace saw { namespace encode { struct KelSimple {}; } template class data { private: ring_buffer buffer_; public: data() = default; buffer& get_buffer(){ return buffer; } }; namespace impl { template class kelsimple_encode { static_assert(always_false, "This schema type is not being handled by the kelsimple encoding."); }; template struct kelsimple_encode, FromEnc> { static error_or encode(const data, FromEnc>& from, buffer& to){ return void_t{}; } }; } template class codec { public: struct config { size_t depth = 16; size_t length = 1024; }; private: config cfg_; public: codec() = default; SAW_FORBID_COPY(codec); SAW_DEFAULT_MOVE(codec); template error_or encode(const data& from_enc, data& to_enc){ buffer_view buff_v{to_enc.get_buffer()}; auto eov = kelsimple_encode::encode(from_env, buff_v); return void_t{}; } }; }