summaryrefslogtreecommitdiff
path: root/src/codec
diff options
context:
space:
mode:
authorClaudius Holeksa <mail@keldu.de>2023-05-27 15:16:23 +0200
committerClaudius Holeksa <mail@keldu.de>2023-05-27 15:16:23 +0200
commit4ffe4b85c1ba192463aac46f95d0704c0196b7d2 (patch)
tree01d76a171485b094ab4d6cb43298e6db91ae4b53 /src/codec
parent66dd61108f9a85f75284fc2c2ac4aabdf69fca38 (diff)
c++: Expanding data
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_;}
};