diff options
Diffstat (limited to 'src/codec/simple.h')
-rw-r--r-- | src/codec/simple.h | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/src/codec/simple.h b/src/codec/simple.h new file mode 100644 index 0000000..1b6cf0d --- /dev/null +++ b/src/codec/simple.h @@ -0,0 +1,62 @@ +#pragma once + +#include "data.h" + +namespace saw { +namespace encode { +struct KelSimple {}; +} + +template<typename T> +class data<T, encode::KelSimple> { +private: + ring_buffer buffer_; +public: + data() = default; + + buffer& get_buffer(){ + return buffer; + } +}; + +namespace impl { +template<typename Schema, typename FromEnc> +class kelsimple_encode { + static_assert(always_false<Schema, FromEnc>, "This schema type is not being handled by the kelsimple encoding."); +}; + +template<typename T, size_t N, typename Schema, typename FromEnc> +struct kelsimple_encode<schema::Primitive<T,N>, FromEnc> { + static error_or<void> encode(const data<schema::Primitive<T,N>, FromEnc>& from, buffer& to){ + + + return void_t{}; + } +}; +} + +template<typename Schema> +class codec<Schema, encode::KelSimple> { +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<typename FromEnc> + error_or<void> encode(const data<Schema, FromEnc>& from_enc, data<Schema, encode::KelSimple>& to_enc){ + buffer_view buff_v{to_enc.get_buffer()}; + + auto eov = kelsimple_encode::encode(from_env, buff_v); + + return void_t{}; + } +}; +} |