diff options
author | Claudius "keldu" Holeksa <mail@keldu.de> | 2025-07-01 10:59:53 +0200 |
---|---|---|
committer | Claudius "keldu" Holeksa <mail@keldu.de> | 2025-07-01 10:59:53 +0200 |
commit | b71f4791ce6d50d72f523aa9880228ab30ee2752 (patch) | |
tree | 3a269fd0b455ad7ba61ada7dc42fb63883913bd1 /modules | |
parent | 4a85d662012360fecffc9b0e58a582204f631957 (diff) |
Added contributors + license + some data change
Diffstat (limited to 'modules')
-rw-r--r-- | modules/codec/c++/data.hpp | 37 |
1 files changed, 30 insertions, 7 deletions
diff --git a/modules/codec/c++/data.hpp b/modules/codec/c++/data.hpp index 61bc9ea..48b2e60 100644 --- a/modules/codec/c++/data.hpp +++ b/modules/codec/c++/data.hpp @@ -349,6 +349,14 @@ public: return value_.at(this->get_flat_index(i)); } + constexpr data<T, encode::Native>& operator()(const data<schema::FixedArray<schema::UInt64, sizeof...(D)>>& i){ + return value_.at(this->get_flat_index(i)); + } + + constexpr const data<T, encode::Native>& operator()(const data<schema::FixedArray<schema::UInt64, sizeof...(D)>>& i) const{ + return value_.at(this->get_flat_index(i)); + } + template<uint64_t i> constexpr uint64_t get_dim_size() const { return parameter_pack_value<i, uint64_t, D...>::value; @@ -702,42 +710,57 @@ class data<schema::Array<T,Dim>, encode::Native> { static_assert(sizeof...(Dims)==Dim, "Argument size must be equal to the Dimension"); } - data<T, encode::Native>& at(data<schema::UInt64, encode::Native> i) { + constexpr data<T, encode::Native>& at(data<schema::UInt64, encode::Native> i) { data<schema::FixedArray<schema::UInt64,Dim>, encode::Native> i_arr; i_arr.at(0u) = i; return at(i_arr); } - const data<T, encode::Native>& at(data<schema::UInt64, encode::Native> i) const { + constexpr const data<T, encode::Native>& at(data<schema::UInt64, encode::Native> i) const { data<schema::FixedArray<schema::UInt64,Dim>, encode::Native> i_arr; i_arr.at(0u) = i; return at(i_arr); } - data<T,encode::Native>& at(const data<schema::FixedArray<schema::UInt64,Dim>>& i){ + constexpr data<T,encode::Native>& at(const data<schema::FixedArray<schema::UInt64,Dim>>& i){ return value_.at(this->get_flat_index(i)); } - const data<T,encode::Native>& at(const data<schema::FixedArray<schema::UInt64,Dim>>& i)const{ + constexpr const data<T,encode::Native>& at(const data<schema::FixedArray<schema::UInt64,Dim>>& i)const{ + return value_.at(this->get_flat_index(i)); + } + + constexpr data<T, encode::Native>& operator()(const data<schema::FixedArray<schema::UInt64, Dim>>& i){ + return value_.at(this->get_flat_index(i)); + } + + constexpr const data<T, encode::Native>& operator()(const data<schema::FixedArray<schema::UInt64, Dim>>& i) const{ return value_.at(this->get_flat_index(i)); } template<uint64_t i> - data<schema::UInt64, encode::Native> get_dim_size() const { + constexpr data<schema::UInt64, encode::Native> get_dim_size() const { static_assert(i < Dim, "Index used to retrieve Dimension size is too large."); return dims_.at(i); } - std::size_t get_dim_size(uint64_t i) const { + constexpr std::size_t get_dim_size(uint64_t i) const { return dims_.at(i).get(); } - data<schema::UInt64,encode::Native> size() const { return {value_.size()};} + constexpr data<schema::UInt64,encode::Native> size() const { return {value_.size()};} data<schema::FixedArray<schema::UInt64, Dim>,encode::Native> get_dims() const { return {dims_}; } + /** + * Return the meta size + */ + constexpr data<schema::FixedArray<schema::UInt64, Dim>,encode::Native> dims() const { + return {dims_}; + } + private: template<typename U> uint64_t get_flat_index(const U& i) const { |