diff options
Diffstat (limited to 'lib/core/c++')
| -rw-r--r-- | lib/core/c++/chunk.hpp | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/lib/core/c++/chunk.hpp b/lib/core/c++/chunk.hpp index 223ceec..1950661 100644 --- a/lib/core/c++/chunk.hpp +++ b/lib/core/c++/chunk.hpp @@ -6,26 +6,24 @@ namespace kel { namespace lbm { namespace sch { namespace impl { -template<typename Sch, uint64_t Ghost, typename LeftG, typename RightG> -struct chunk_schema_type_helper { - using Schema = typename chunk_schema_type_helper<Sch,Ghost,LeftG,RightG>::Schema; -}; +template<typename Sch, uint64_t Ghost, typename LeftG, typename RightG = saw::tmpl_value_group<uint64_t>> +struct chunk_schema_type_helper; -template<typename Sch, uint64_t Ghost, typename Side0, typename... Sides, typename... AddedSides> -struct chunk_schema_type_helper<Sch, Ghost, saw::tmpl_group<Side0,Sides...>, saw::tmpl_group<AddedSides...>> final { - using Schema = FixedArray<Sch,AddedSides...>; +template<typename Sch, uint64_t Ghost, uint64_t Side0, uint64_t... Sides, uint64_t... AddedSides> +struct chunk_schema_type_helper<Sch, Ghost, saw::tmpl_value_group<uint64_t,Side0,Sides...>, saw::tmpl_value_group<uint64_t,AddedSides...>> final { + using Schema = typename chunk_schema_type_helper<Sch,Ghost,saw::tmpl_value_group<uint64_t,Sides...>, saw::tmpl_value_group<uint64_t,AddedSides...,(Side0+2u*(Ghost))>>::Schema; }; template<typename Sch, uint64_t Ghost, uint64_t... AddedSides> -struct chunk_schema_type_helper<Sch, Ghost, saw::tmpl_group<Side0,Sides...>, saw::tmpl_group<AddedSides...>> final { +struct chunk_schema_type_helper<Sch, Ghost, saw::tmpl_value_group<uint64_t>, saw::tmpl_value_group<uint64_t,AddedSides...>> final { using Schema = FixedArray<Sch,AddedSides...>; }; } -template<typename Schema, uint64_t Ghost, uint64_t... Side> +template<typename Sch, uint64_t Ghost, uint64_t... Sides> struct Chunk { - using InnerSchema = typename impl::chunk_schema_type_helper<Sch, Ghost, Side...>::Schema; + using InnerSchema = typename impl::chunk_schema_type_helper<Sch, Ghost, saw::tmpl_value_group<uint64_t,Sides...>>::Schema; }; // Not needed for now |
