diff options
Diffstat (limited to 'modules/codec/c++')
-rw-r--r-- | modules/codec/c++/data.hpp | 32 |
1 files changed, 12 insertions, 20 deletions
diff --git a/modules/codec/c++/data.hpp b/modules/codec/c++/data.hpp index ce57967..d13ff47 100644 --- a/modules/codec/c++/data.hpp +++ b/modules/codec/c++/data.hpp @@ -616,15 +616,15 @@ class data<schema::Array<T,Dim>, encode::Native> { using Schema = schema::Array<T,Dim>; using MetaSchema = typename meta_schema<Schema>::MetaSchema; private: - // data<schema::FixedArray<schema::UInt64, Dim>> dims_; - std::array<uint64_t, Dim> dims_; + data<schema::FixedArray<schema::UInt64, Dim>> dims_; + // std::array<uint64_t, Dim> dims_; std::vector<data<T, encode::Native>> value_; uint64_t get_full_size() const { uint64_t s = 1; for(uint64_t iter = 0; iter < Dim; ++iter){ - s *= dims_.at(iter); + s *= dims_.at({iter}).get(); } return s; @@ -633,29 +633,21 @@ class data<schema::Array<T,Dim>, encode::Native> { data(): value_{} { - for(auto& iter : dims_){ - iter = 0u; + for(uint64_t iter = 0; iter < Dim; ++iter){ + dims_.at({iter}) = 0u; } } SAW_DEFAULT_COPY(data); SAW_DEFAULT_MOVE(data); - data(const std::array<uint64_t, Dim>& i): - dims_{i}, + data(const data<MetaSchema, encode::Native>& init__): + dims_{init__}, value_{} { value_.resize(get_full_size()); } - data(data<MetaSchema, encode::Native> init) - { - for(uint64_t i = 0; i < Dim; ++i){ - dims_.at(i) = init.at(i).get(); - } - value_.resize(get_full_size()); - } - template<size_t i = 0> error_or<void> add(saw::data<T,encode::Native> data){ /** @todo @@ -687,7 +679,7 @@ class data<schema::Array<T,Dim>, encode::Native> { template<std::integral... Dims> data(Dims... size_): - data{{static_cast<uint64_t>(size_)...}} + data{{{static_cast<uint64_t>(size_)...}}} { static_assert(sizeof...(Dims)==Dim, "Argument size must be equal to the Dimension"); } @@ -719,12 +711,12 @@ class data<schema::Array<T,Dim>, encode::Native> { } std::size_t get_dim_size(uint64_t i) const { - return dims_.at(i); + return dims_.at(i).get(); } data<schema::UInt64,encode::Native> size() const { return {value_.size()};} - data<schema::FixedArray<schema::UInt64, Dim>> get_dims() const { + data<schema::FixedArray<schema::UInt64, Dim>,encode::Native> get_dims() const { return {dims_}; } @@ -752,9 +744,9 @@ private: static_assert(always_false<V>, "Cases exhausted"); } }(i.at(iter)); - assert(ind < dims_.at({iter})); + assert(ind < dims_.at({iter}).get() ); s += ind * stride; - stride *= dims_.at(iter); + stride *= dims_.at(iter).get(); } return s; |