summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClaudius "keldu" Holeksa <mail@keldu.de>2025-04-11 19:32:55 +0200
committerClaudius "keldu" Holeksa <mail@keldu.de>2025-04-11 19:32:55 +0200
commit9f2eb416decd293460de01a0023edfe121aacef5 (patch)
tree1a0372e4fbc510eefab0bee78359d7eb47a51ec1
parent5c65123b44cd8e9761ff8c812b141a496a649019 (diff)
Moved Array meta data to forstio type
-rw-r--r--modules/codec/c++/data.hpp32
-rw-r--r--modules/codec/tests/codec.cpp2
2 files changed, 13 insertions, 21 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;
diff --git a/modules/codec/tests/codec.cpp b/modules/codec/tests/codec.cpp
index 8f50a1c..ef45b4e 100644
--- a/modules/codec/tests/codec.cpp
+++ b/modules/codec/tests/codec.cpp
@@ -54,7 +54,7 @@ using TestInterface = Interface<
SAW_TEST("One Dimensional Array") {
using namespace saw;
- data<schema::OneDimArray, encode::Native> arr{500u};
+ data<schema::OneDimArray, encode::Native> arr{{{500u}}};
int bar = 0;