From 2aa2af0007b7e969845642027c635cd3fd9c8aea Mon Sep 17 00:00:00 2001 From: Claudius Holeksa Date: Wed, 3 May 2023 20:34:02 +0200 Subject: Moved dirs and added codec-json dir --- src/codec/data.h | 89 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 src/codec/data.h (limited to 'src/codec/data.h') diff --git a/src/codec/data.h b/src/codec/data.h new file mode 100644 index 0000000..1682ae7 --- /dev/null +++ b/src/codec/data.h @@ -0,0 +1,89 @@ +#pragma once + +#include +#include "schema.h" + +namespace saw { +namespace encode { +struct Native {}; +} +/* + * Helper for the basic message container, so the class doesn't have to be + * specialized 10 times. + */ +template struct native_data_type; + +template <> +struct native_data_type> { + using type = int8_t; +}; + +template <> +struct native_data_type> { + using type = int16_t; +}; + +template <> +struct native_data_type> { + using type = int32_t; +}; + +template <> +struct native_data_type> { + using type = int64_t; +}; + +template <> +struct native_data_type> { + using type = uint8_t; +}; + +template <> +struct native_data_type> { + using type = uint16_t; +}; + +template <> +struct native_data_type> { + using type = uint32_t; +}; + +template <> +struct native_data_type> { + using type = uint64_t; +}; + +template <> +struct native_data_type> { + using type = float; +}; + +template +class data { +private: + static_assert(always_false, "Type not supported"); +}; + +template<> +class data { +private: + std::string value_; +public: + SAW_FORBID_COPY(data); + + data(std::string&& value__):value_{std::move(value__)}{} + + std::size_t size() const { + return value_.size(); + } + + bool operator==(const data& data){ + return value_ == data.value_; + } +}; + +template +class data, encode::Native> { +private: +}; +} -- cgit v1.2.3