summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
Diffstat (limited to 'modules')
-rw-r--r--modules/codec/c++/data.hpp37
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 {