summaryrefslogtreecommitdiff
path: root/src/codec
diff options
context:
space:
mode:
Diffstat (limited to 'src/codec')
-rw-r--r--src/codec/data.h31
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_;}
};