diff options
author | Claudius Holeksa <mail@keldu.de> | 2023-05-27 15:16:23 +0200 |
---|---|---|
committer | Claudius Holeksa <mail@keldu.de> | 2023-05-27 15:16:23 +0200 |
commit | 4ffe4b85c1ba192463aac46f95d0704c0196b7d2 (patch) | |
tree | 01d76a171485b094ab4d6cb43298e6db91ae4b53 /src/codec/data.h | |
parent | 66dd61108f9a85f75284fc2c2ac4aabdf69fca38 (diff) |
c++: Expanding data
Diffstat (limited to 'src/codec/data.h')
-rw-r--r-- | src/codec/data.h | 31 |
1 files changed, 30 insertions, 1 deletions
diff --git a/src/codec/data.h b/src/codec/data.h index 310942c..e181dc4 100644 --- a/src/codec/data.h +++ b/src/codec/data.h @@ -69,6 +69,22 @@ private: static_assert(always_false<T>, "Type not supported"); }; +template<typename T> +class data<schema::Array<T>, encode::Native> { + private: + std::vector<data<T, encode::Native>> value_; + public: + data(size_t size_){ + value_.resize(size_); + } + + data<T>& at(size_t i){ + return value_.at(i); + } + + size_t size() const { return value_;} +}; + template<> class data<schema::String, encode::Native> { private: @@ -76,7 +92,8 @@ private: public: SAW_FORBID_COPY(data); - data(std::string&& value__):value_{std::move(value__)}{} + data() = default; + data(std::string value__):value_{std::move(value__)}{} std::size_t size() const { return value_.size(); @@ -90,6 +107,18 @@ public: template<typename T, size_t N> class data<schema::Primitive<T,N>, encode::Native> { private: + typename native_data_type<schema::Primitive<T,N>>::type value_; +public: + SAW_FORBID_COPY(data); + + data(typename native_data_type<schema::Primitive<T,N>::type value__): + value_{std::move(value__)}{} + + void set(typename native_data_type<schema::Primitive<T,N>>::type val){ + value_ = val; + } + + typename native_data_type<schema::Primitive<T,N>>::type get() const {return value_;} }; |