diff options
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_;} }; |