summaryrefslogtreecommitdiff
path: root/lib/c++/descriptor.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/c++/descriptor.hpp')
-rw-r--r--lib/c++/descriptor.hpp16
1 files changed, 9 insertions, 7 deletions
diff --git a/lib/c++/descriptor.hpp b/lib/c++/descriptor.hpp
index 2ba2c97..e81738e 100644
--- a/lib/c++/descriptor.hpp
+++ b/lib/c++/descriptor.hpp
@@ -37,15 +37,11 @@ struct CellField<
>
> {
using Descriptor = Desc;
- using Schema = CellField<Desc,Struct<Member<CellFieldTypes,CellFieldNames>...>>;
- using MetaSchema = FixedArray<UInt64,Desc::D>;
};
template<typename Desc, typename... CellFieldMembers>
struct CellFieldStruct {
- using Schema = CellFieldStruct<Desc, Struct<CellFieldMembers...>>;
- using InnerSchema = Struct<CellFieldMembers...>;
- using MetaSchema = typename InnerSchema::MetaSchema;
+ using Descriptor = Desc;
// using MetaSchema = FixedArray<UInt64, Desc::D>;
};
@@ -243,16 +239,22 @@ public:
namespace saw {
template<typename T, typename Desc, uint64_t S, uint64_t D, uint64_t Q>
struct meta_schema<kel::lbm::sch::Cell<T,Desc,S,D,Q>> {
- using MetaSchema = schema::Void;
+ using MetaSchema = schema::Void;
using Schema = kel::lbm::sch::Cell<T,Desc,S,D,Q>;
};
template<typename Desc, typename CellT>
struct meta_schema<kel::lbm::sch::CellField<Desc, CellT>> {
- using MetaSchema = schema::FixedArray<schema::UInt64,Desc::D>;
+ using MetaSchema = schema::FixedArray<schema::UInt64,Desc::D>;
using Schema = kel::lbm::sch::CellField<Desc, CellT>;
};
+template<typename Desc, typename... CellFieldsT>
+struct meta_schema<kel::lbm::sch::CellFieldStruct<Desc,schema::Struct<CellFieldsT...>>> {
+ using MetaSchema = schema::FixedArray<schema::UInt64,Desc::D>;
+ using Schema = kel::lbm::sch::CellFieldStruct<Desc,schema::Struct<CellFieldsT...>>;
+};
+
template<typename Sch, typename Desc, uint64_t S, uint64_t D, uint64_t Q, typename Encode>
class data<kel::lbm::sch::Cell<Sch, Desc, S, D, Q>, Encode> final {
public: