diff options
Diffstat (limited to 'src/codec')
-rw-r--r-- | src/codec/data.h | 39 |
1 files changed, 20 insertions, 19 deletions
diff --git a/src/codec/data.h b/src/codec/data.h index 397aed1..76be8e5 100644 --- a/src/codec/data.h +++ b/src/codec/data.h @@ -187,19 +187,6 @@ class data<schema::Array<T,Dim>, encode::Native> { return s; } - - std::size_t get_index(const std::array<std::size_t, Dim>& i) const { - std::size_t s = 0; - - std::size_t stride = 1; - - for(std::size_t iter = 0; iter < Dim; ++iter){ - s += i.at(iter) * stride; - stride *= dims_.at(iter); - } - - return s; - } public: data() = default; SAW_DEFAULT_COPY(data); @@ -220,21 +207,21 @@ class data<schema::Array<T,Dim>, encode::Native> { } data<T, encode::Native>& at(const std::array<std::size_t, Dim>& ind){ - return value_.at(this->get_index(ind)); + return value_.at(this->get_flat_index(ind)); } const data<T, encode::Native>& at(const std::array<std::size_t, Dim>& ind) const { - return value_.at(this->get_index(ind)); + return value_.at(this->get_flat_index(ind)); } template<std::integral... Dims> data<T, encode::Native>& at(Dims... i){ - return value_.at(this->get_index({i...})); + return value_.at(this->get_flat_index({i...})); } template<std::integral... Dims> const data<T, encode::Native>& at(Dims... i) const { - return value_.at(this->get_index({i...})); + return value_.at(this->get_flat_index({i...})); } std::size_t get_dim_size(std::size_t i) const { @@ -242,6 +229,20 @@ class data<schema::Array<T,Dim>, encode::Native> { } size_t size() const { return value_.size();} + +private: + std::size_t get_flat_index(const std::array<std::size_t, Dim>& i) const { + std::size_t s = 0; + + std::size_t stride = 1; + + for(std::size_t iter = 0; iter < Dim; ++iter){ + s += i.at(iter) * stride; + stride *= dims_.at(iter); + } + + return s; + } }; template<> @@ -282,8 +283,8 @@ public: value_.at(i) = val; } - bool operator==(const data<schema::String, encode::Native>& data){ - return value_ == data.value_; + bool operator==(const std::string_view& val)const{ + return value_ == val; } }; |