From b71f4791ce6d50d72f523aa9880228ab30ee2752 Mon Sep 17 00:00:00 2001 From: "Claudius \"keldu\" Holeksa" Date: Tue, 1 Jul 2025 10:59:53 +0200 Subject: Added contributors + license + some data change --- modules/codec/c++/data.hpp | 37 ++++++++++++++++++++++++++++++------- 1 file changed, 30 insertions(+), 7 deletions(-) (limited to 'modules/codec/c++/data.hpp') 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& operator()(const data>& i){ + return value_.at(this->get_flat_index(i)); + } + + constexpr const data& operator()(const data>& i) const{ + return value_.at(this->get_flat_index(i)); + } + template constexpr uint64_t get_dim_size() const { return parameter_pack_value::value; @@ -702,42 +710,57 @@ class data, encode::Native> { static_assert(sizeof...(Dims)==Dim, "Argument size must be equal to the Dimension"); } - data& at(data i) { + constexpr data& at(data i) { data, encode::Native> i_arr; i_arr.at(0u) = i; return at(i_arr); } - const data& at(data i) const { + constexpr const data& at(data i) const { data, encode::Native> i_arr; i_arr.at(0u) = i; return at(i_arr); } - data& at(const data>& i){ + constexpr data& at(const data>& i){ return value_.at(this->get_flat_index(i)); } - const data& at(const data>& i)const{ + constexpr const data& at(const data>& i)const{ + return value_.at(this->get_flat_index(i)); + } + + constexpr data& operator()(const data>& i){ + return value_.at(this->get_flat_index(i)); + } + + constexpr const data& operator()(const data>& i) const{ return value_.at(this->get_flat_index(i)); } template - data get_dim_size() const { + constexpr data 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 size() const { return {value_.size()};} + constexpr data size() const { return {value_.size()};} data,encode::Native> get_dims() const { return {dims_}; } + /** + * Return the meta size + */ + constexpr data,encode::Native> dims() const { + return {dims_}; + } + private: template uint64_t get_flat_index(const U& i) const { -- cgit v1.2.3