summaryrefslogtreecommitdiff
path: root/src/codec/simple.h
blob: 1b6cf0d470b4273d335c5c300b30d45a396dfdf8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
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{};
	}
};
}