Add support for custom strides on map

See merge request oss/rotgen!14
This commit is contained in:
Joel Falcou 2025-08-15 16:49:33 +02:00
parent 87d4bc0585
commit c8fb0f476c
6 changed files with 220 additions and 69 deletions

View file

@ -13,7 +13,7 @@
namespace rotgen
{
template<typename Ref, int Options = ColMajor, typename = void>
template<typename Ref, int Options = ColMajor, typename Stride = rotgen::stride>
class map : public find_map<Ref>
{
public:
@ -33,16 +33,16 @@ namespace rotgen
static constexpr bool is_defined_static = false;
using ptr_type = std::conditional_t<is_immutable, value_type const*, value_type*>;
using stride_type = stride;
using stride_type = Stride;
static constexpr Index RowsAtCompileTime = Ref::RowsAtCompileTime;
static constexpr Index ColsAtCompileTime = Ref::ColsAtCompileTime;
map(ptr_type ptr, Index r, Index c, stride_type s) : parent(ptr, r, c,s) {}
map(ptr_type ptr, Index r, Index c) : map(ptr, r, c, strides<storage_order>(r,c)) {}
map(ptr_type ptr, Index r, Index c, stride_type s) : parent(ptr, r, c, strides<storage_order>(s)) {}
map(ptr_type ptr, Index r, Index c) : parent(ptr, r, c, strides<storage_order>(r,c)) {}
map(ptr_type ptr, stride_type s) requires(RowsAtCompileTime!=-1 && ColsAtCompileTime!=-1)
: parent(ptr,RowsAtCompileTime,ColsAtCompileTime, s)
: parent(ptr,RowsAtCompileTime,ColsAtCompileTime, strides<storage_order>(s))
{}
map(ptr_type ptr, Index size) requires(RowsAtCompileTime==1 || ColsAtCompileTime==1)