Iros
 
Loading...
Searching...
No Matches
di::LayoutStride::Mapping< Extents > Class Template Reference

#include <di/vocab/md/layout_stride.h>

Public Types

using ExtentsType = Extents
 
using SizeType = typename ExtentsType::SizeType
 
using RankType = typename ExtentsType::RankType
 
using LayoutType = LayoutStride
 

Public Member Functions

 Mapping ()=default
 
 Mapping (Mapping const &)=default
 
 Mapping (Mapping &&)=default
 
constexpr Mapping (ExtentsType const &extents)
 
template<typename OtherSizeType>
requires (concepts::ConvertibleTo<OtherSizeType const&, SizeType> && concepts::ConstructibleFrom<SizeType, OtherSizeType const&>)
constexpr Mapping (ExtentsType const &extents, Span< OtherSizeType, rank > strides)
 
template<typename OtherSizeType>
requires (concepts::ConvertibleTo<OtherSizeType const&, SizeType> && concepts::ConstructibleFrom<SizeType, OtherSizeType const&>)
constexpr Mapping (ExtentsType const &extents, Array< OtherSizeType, rank > const &strides)
 
template<detail::LayoutMappingAlike StridedLayoutMapping>
requires (concepts::ConstructibleFrom<ExtentsType, typename StridedLayoutMapping::ExtentsType> && StridedLayoutMapping::is_always_unique() && StridedLayoutMapping::is_always_strided())
constexpr explicit ((!concepts::ConvertibleTo< typename StridedLayoutMapping::ExtentsType, ExtentsType >) &&(detail::IsMappingOf< LayoutLeft, StridedLayoutMapping >||detail::IsMappingOf< LayoutRight, StridedLayoutMapping >||detail::IsMappingOf< LayoutStride, StridedLayoutMapping >)) Mapping(StridedLayoutMapping const &other)
 
auto operator= (Mapping const &) -> Mapping &=default
 
constexpr auto extents () const -> ExtentsType const &
 
constexpr auto strides () const -> Array< SizeType, rank >
 
constexpr auto required_span_size () const -> SizeType
 
template<typename... Indices>
requires (sizeof...(Indices) == ExtentsType::rank() && (concepts::ConvertibleTo<Indices, SizeType> && ...))
constexpr auto operator() (Indices... indices) const -> SizeType
 
constexpr auto is_exhaustive () const -> bool
 
constexpr auto stride (RankType i) const -> SizeType
 

Static Public Member Functions

static constexpr auto is_always_unique () -> bool
 
static constexpr auto is_always_exhaustive () -> bool
 
static constexpr auto is_always_strided () -> bool
 
static constexpr auto is_unique () -> bool
 
static constexpr auto is_strided () -> bool
 

Friends

template<typename OtherExtents>
requires (Extents::rank() == OtherExtents::rank())
constexpr friend auto operator== (Mapping const &a, Mapping< OtherExtents > const &b) -> bool
 

Member Typedef Documentation

◆ ExtentsType

template<typename Extents>
using di::vocab::LayoutStride::Mapping< Extents >::ExtentsType = Extents

◆ LayoutType

template<typename Extents>
using di::vocab::LayoutStride::Mapping< Extents >::LayoutType = LayoutStride

◆ RankType

template<typename Extents>
using di::vocab::LayoutStride::Mapping< Extents >::RankType = typename ExtentsType::RankType

◆ SizeType

template<typename Extents>
using di::vocab::LayoutStride::Mapping< Extents >::SizeType = typename ExtentsType::SizeType

Constructor & Destructor Documentation

◆ Mapping() [1/6]

template<typename Extents>
di::vocab::LayoutStride::Mapping< Extents >::Mapping ( )
default

◆ Mapping() [2/6]

template<typename Extents>
di::vocab::LayoutStride::Mapping< Extents >::Mapping ( Mapping< Extents > const & )
default

◆ Mapping() [3/6]

template<typename Extents>
di::vocab::LayoutStride::Mapping< Extents >::Mapping ( Mapping< Extents > && )
default

◆ Mapping() [4/6]

template<typename Extents>
di::vocab::LayoutStride::Mapping< Extents >::Mapping ( ExtentsType const & extents)
inlineconstexpr

◆ Mapping() [5/6]

template<typename Extents>
template<typename OtherSizeType>
requires (concepts::ConvertibleTo<OtherSizeType const&, SizeType> && concepts::ConstructibleFrom<SizeType, OtherSizeType const&>)
di::vocab::LayoutStride::Mapping< Extents >::Mapping ( ExtentsType const & extents,
Span< OtherSizeType, rank > strides )
inlineconstexpr

◆ Mapping() [6/6]

template<typename Extents>
template<typename OtherSizeType>
requires (concepts::ConvertibleTo<OtherSizeType const&, SizeType> && concepts::ConstructibleFrom<SizeType, OtherSizeType const&>)
di::vocab::LayoutStride::Mapping< Extents >::Mapping ( ExtentsType const & extents,
Array< OtherSizeType, rank > const & strides )
inlineconstexpr

Member Function Documentation

◆ explicit()

template<typename Extents>
template<detail::LayoutMappingAlike StridedLayoutMapping>
requires (concepts::ConstructibleFrom<ExtentsType, typename StridedLayoutMapping::ExtentsType> && StridedLayoutMapping::is_always_unique() && StridedLayoutMapping::is_always_strided())
di::vocab::LayoutStride::Mapping< Extents >::explicit ( (!concepts::ConvertibleTo< typename StridedLayoutMapping< Extents >::ExtentsType, ExtentsType >) &&(detail::IsMappingOf< LayoutLeft, StridedLayoutMapping< Extents > >|| detail::IsMappingOf< LayoutRight, StridedLayoutMapping< Extents > >|| detail::IsMappingOf< LayoutStride, StridedLayoutMapping< Extents > >) ) const &
inlineconstexpr

◆ extents()

template<typename Extents>
auto di::vocab::LayoutStride::Mapping< Extents >::extents ( ) const -> ExtentsType const&
inlineconstexpr

◆ is_always_exhaustive()

template<typename Extents>
static constexpr auto di::vocab::LayoutStride::Mapping< Extents >::is_always_exhaustive ( ) -> bool
inlinestaticconstexpr

◆ is_always_strided()

template<typename Extents>
static constexpr auto di::vocab::LayoutStride::Mapping< Extents >::is_always_strided ( ) -> bool
inlinestaticconstexpr

◆ is_always_unique()

template<typename Extents>
static constexpr auto di::vocab::LayoutStride::Mapping< Extents >::is_always_unique ( ) -> bool
inlinestaticconstexpr

◆ is_exhaustive()

template<typename Extents>
auto di::vocab::LayoutStride::Mapping< Extents >::is_exhaustive ( ) const -> bool
inlineconstexpr

◆ is_strided()

template<typename Extents>
static constexpr auto di::vocab::LayoutStride::Mapping< Extents >::is_strided ( ) -> bool
inlinestaticconstexpr

◆ is_unique()

template<typename Extents>
static constexpr auto di::vocab::LayoutStride::Mapping< Extents >::is_unique ( ) -> bool
inlinestaticconstexpr

◆ operator()()

template<typename Extents>
template<typename... Indices>
requires (sizeof...(Indices) == ExtentsType::rank() && (concepts::ConvertibleTo<Indices, SizeType> && ...))
auto di::vocab::LayoutStride::Mapping< Extents >::operator() ( Indices... indices) const -> SizeType
inlineconstexpr

◆ operator=()

template<typename Extents>
auto di::vocab::LayoutStride::Mapping< Extents >::operator= ( Mapping< Extents > const & ) -> Mapping &=default
default

◆ required_span_size()

template<typename Extents>
auto di::vocab::LayoutStride::Mapping< Extents >::required_span_size ( ) const -> SizeType
inlineconstexpr

◆ stride()

template<typename Extents>
auto di::vocab::LayoutStride::Mapping< Extents >::stride ( RankType i) const -> SizeType
inlineconstexpr

◆ strides()

template<typename Extents>
auto di::vocab::LayoutStride::Mapping< Extents >::strides ( ) const -> Array<SizeType, rank>
inlineconstexpr

Friends And Related Symbol Documentation

◆ operator==

template<typename Extents>
template<typename OtherExtents>
requires (Extents::rank() == OtherExtents::rank())
friend auto operator== ( Mapping< Extents > const & a,
Mapping< OtherExtents > const & b ) -> bool
friend

The documentation for this class was generated from the following files: