Finite Volume Solver  prototype
A framework to build finite volume solvers for the AG Klein at the Freie Universität Berlin.
Public Member Functions | Static Public Member Functions | Private Attributes | List of all members
fub::layout_stride::mapping< Extents > Class Template Reference

#include <mdspan.hpp>

Public Member Functions

constexpr mapping ()=default
 
constexpr mapping (const Extents &e, const std::array< std::ptrdiff_t, Extents::rank()> &s) noexcept
 
std::array< std::ptrdiff_t, Extents::rank()> MakeStrides (const layout_left::mapping< Extents > &other)
 
constexpr mapping (const layout_left::mapping< Extents > &other)
 
constexpr const Extentsextents () const noexcept
 
constexpr const std::array< std::ptrdiff_t, Extents::rank()> & strides () const noexcept
 
constexpr std::ptrdiff_t required_span_size () const noexcept
 
template<typename... IndexType, typename = std::enable_if_t<conjunction< std::is_convertible<IndexType, std::ptrdiff_t>...>::value>, typename = std::enable_if_t<(sizeof...(IndexType) == Extents::rank())>>
std::ptrdiff_t operator() (IndexType... is) const
 
constexpr bool is_unique () const noexcept
 
constexpr bool is_contiguous () const noexcept
 
constexpr bool is_strided () const noexcept
 
std::ptrdiff_t stride (size_t rank) const noexcept
 
template<class OtherExtents >
constexpr bool operator== (const mapping< OtherExtents > &other) const noexcept
 
template<class OtherExtents >
constexpr bool operator!= (const mapping< OtherExtents > &other) const noexcept
 

Static Public Member Functions

static constexpr bool is_always_unique () noexcept
 
static constexpr bool is_always_contiguous () noexcept
 
static constexpr bool is_always_strided () noexcept
 

Private Attributes

std::array< std::ptrdiff_t, Extents::rank()> strides_
 

Constructor & Destructor Documentation

◆ mapping() [1/3]

template<class Extents >
constexpr fub::layout_stride::mapping< Extents >::mapping ( )
constexprdefault

◆ mapping() [2/3]

template<class Extents >
constexpr fub::layout_stride::mapping< Extents >::mapping ( const Extents e,
const std::array< std::ptrdiff_t, Extents::rank()> &  s 
)
inlineconstexprnoexcept

◆ mapping() [3/3]

template<class Extents >
constexpr fub::layout_stride::mapping< Extents >::mapping ( const layout_left::mapping< Extents > &  other)
inlineconstexpr

Member Function Documentation

◆ extents()

template<class Extents >
constexpr const Extents& fub::layout_stride::mapping< Extents >::extents ( ) const
inlineconstexprnoexcept

◆ is_always_contiguous()

template<class Extents >
static constexpr bool fub::layout_stride::mapping< Extents >::is_always_contiguous ( )
inlinestaticconstexprnoexcept

◆ is_always_strided()

template<class Extents >
static constexpr bool fub::layout_stride::mapping< Extents >::is_always_strided ( )
inlinestaticconstexprnoexcept

◆ is_always_unique()

template<class Extents >
static constexpr bool fub::layout_stride::mapping< Extents >::is_always_unique ( )
inlinestaticconstexprnoexcept

◆ is_contiguous()

template<class Extents >
constexpr bool fub::layout_stride::mapping< Extents >::is_contiguous ( ) const
inlineconstexprnoexcept

◆ is_strided()

template<class Extents >
constexpr bool fub::layout_stride::mapping< Extents >::is_strided ( ) const
inlineconstexprnoexcept

◆ is_unique()

template<class Extents >
constexpr bool fub::layout_stride::mapping< Extents >::is_unique ( ) const
inlineconstexprnoexcept

◆ MakeStrides()

template<class Extents >
std::array<std::ptrdiff_t, Extents::rank()> fub::layout_stride::mapping< Extents >::MakeStrides ( const layout_left::mapping< Extents > &  other)
inline

◆ operator!=()

template<class Extents >
template<class OtherExtents >
constexpr bool fub::layout_stride::mapping< Extents >::operator!= ( const mapping< OtherExtents > &  other) const
inlineconstexprnoexcept

◆ operator()()

template<class Extents >
template<typename... IndexType, typename = std::enable_if_t<conjunction< std::is_convertible<IndexType, std::ptrdiff_t>...>::value>, typename = std::enable_if_t<(sizeof...(IndexType) == Extents::rank())>>
std::ptrdiff_t fub::layout_stride::mapping< Extents >::operator() ( IndexType...  is) const
inline

◆ operator==()

template<class Extents >
template<class OtherExtents >
constexpr bool fub::layout_stride::mapping< Extents >::operator== ( const mapping< OtherExtents > &  other) const
inlineconstexprnoexcept

◆ required_span_size()

template<class Extents >
constexpr std::ptrdiff_t fub::layout_stride::mapping< Extents >::required_span_size ( ) const
inlineconstexprnoexcept

◆ stride()

template<class Extents >
std::ptrdiff_t fub::layout_stride::mapping< Extents >::stride ( size_t  rank) const
inlinenoexcept

◆ strides()

template<class Extents >
constexpr const std::array<std::ptrdiff_t, Extents::rank()>& fub::layout_stride::mapping< Extents >::strides ( ) const
inlineconstexprnoexcept

Member Data Documentation

◆ strides_

template<class Extents >
std::array<std::ptrdiff_t, Extents::rank()> fub::layout_stride::mapping< Extents >::strides_
private

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