From e37725e87c2f1594dc2e3d300b16341ab937a918 Mon Sep 17 00:00:00 2001 From: "Claudius \"keldu\" Holeksa" Date: Tue, 18 Mar 2025 14:31:00 +0100 Subject: wip --- c++/descriptor.h | 50 ++++++++++++++++++++++++++++---------------------- 1 file changed, 28 insertions(+), 22 deletions(-) (limited to 'c++/descriptor.h') diff --git a/c++/descriptor.h b/c++/descriptor.h index ce72180..6a4488d 100644 --- a/c++/descriptor.h +++ b/c++/descriptor.h @@ -22,23 +22,17 @@ struct Cell { static constexpr uint64_t Size = SC + Desc::D * DC + Desc::Q * QC; }; -template -struct Field { - using Cell = CellT; -}; +template +struct Field; -/** - * T... is restricted to Member schemas - */ -template -using CellData = Struct< - CellT... +template +struct Field< + Desc, + Struct< + CellMembers... + > >; -/** - * T is an array of CellData - */ -template -using Lattice = Array; + } template @@ -69,9 +63,15 @@ class df_info> { namespace saw { template -struct meta_schema> { +struct meta_schema> { using MetaSchema = schema::Void; - using Schema = kel::lbm::sch::Cell; + using Schema = kel::lbm::sch::Cell; +}; + +template +struct meta_schema> { + using MetaSchema = schema::FixedArray; + using Schema = kel::lbm::sch::Field; }; template @@ -88,16 +88,22 @@ public: } }; -template -class data, Encode> final { +template +class data, Encode> final { private: - data, Encode> inner_; + data, Encode> inner_; public: - data(const data>& inner_meta__): + data(const data>& inner_meta__): inner_{inner_meta__} {} - data& operator()(const data, Encode>& index){ + template + data get_dim_size() const { + static_assert(i < Desc::D, "Not enough dimensions"); + return inner_.template get_dim_size(); + } + + data& operator()(const data, Encode>& index){ return inner_(index); } }; -- cgit v1.2.3