dune-common 2.10
Loading...
Searching...
No Matches
Dune::Std::extents< IndexType, exts > Class Template Reference

Multidimensional index space with dynamic and static extents. More...

#include <dune/common/std/extents.hh>

Public Types

using rank_type = std::size_t
 
using index_type = IndexType
 
using size_type = std::make_unsigned_t<index_type>
 

Public Member Functions

extents constructors
constexpr extents () noexcept=default
 The default constructor requires that all exts are not Std::dynamic_extent.
 
template<class... IndexTypes, std::enable_if_t<(... &&std::is_convertible_v< IndexTypes, index_type >), int > = 0, std::enable_if_t<(sizeof...(IndexTypes)==rank()||sizeof...(IndexTypes)==rank_dynamic()), int > = 0, std::enable_if_t<(... &&std::is_nothrow_constructible_v< index_type, IndexTypes >), int > = 0>
constexpr extents (IndexTypes... e) noexcept
 Set all extents by the given integral sequence [[pre: all static extents correspond to the given value e]].
 
template<class I , std::size_t N, std::enable_if_t< std::is_convertible_v< I, index_type >, int > = 0, std::enable_if_t<(N==rank()||N==rank_dynamic()), int > = 0>
constexpr extents (const std::array< I, N > &e) noexcept
 Set all dynamic extents by the given integral array [[pre: all static extents correspond to the given values in e]].
 
template<class I , std::size_t N, std::enable_if_t< std::is_convertible_v< I, index_type >, int > = 0, std::enable_if_t<(N==rank()||N==rank_dynamic()), int > = 0, std::enable_if_t< std::is_nothrow_constructible_v< index_type, const I & >, int > = 0>
constexpr extents (Std::span< I, N > e) noexcept
 Set all dynamic extents by the given integral array [[pre: all static extents correspond to the given values in e]].
 
template<class I , std::size_t... e, std::enable_if_t<(sizeof...(e)==rank()), int > = 0, std::enable_if_t<((e==Std::dynamic_extent||exts==Std::dynamic_extent||e==exts) &&...), int > = 0>
constexpr extents (const extents< I, e... > &other) noexcept
 

Observers

[mdspan.extents.obs], observers of the multidimensional index space

static constexpr rank_type rank () noexcept
 The total number of dimensions.
 
static constexpr rank_type rank_dynamic () noexcept
 The number of dimensions with dynamic extent.
 
static constexpr std::size_t static_extent (rank_type r) noexcept
 Return the static extent of dimension r or Std::dynamic_extent
 
constexpr index_type extent (rank_type r) const noexcept
 Return the extent of dimension i
 

Detailed Description

template<class IndexType, std::size_t... exts>
class Dune::Std::extents< IndexType, exts >

Multidimensional index space with dynamic and static extents.

This class template represents a multidimensional index space of rank equal to sizeof...(exts). Each extent might be specified as a template parameter or as a dynamic parameter in the constructor.

Template Parameters
IndexTypeAn integral type other than bool
exts...Each element of exts is either Std::dynamic_extent or a representable value of type IndexType.

Member Typedef Documentation

◆ index_type

template<class IndexType , std::size_t... exts>
using Dune::Std::extents< IndexType, exts >::index_type = IndexType

◆ rank_type

template<class IndexType , std::size_t... exts>
using Dune::Std::extents< IndexType, exts >::rank_type = std::size_t

◆ size_type

template<class IndexType , std::size_t... exts>
using Dune::Std::extents< IndexType, exts >::size_type = std::make_unsigned_t<index_type>

Constructor & Destructor Documentation

◆ extents() [1/5]

template<class IndexType , std::size_t... exts>
Dune::Std::extents< IndexType, exts >::extents ( )
constexprdefaultnoexcept

The default constructor requires that all exts are not Std::dynamic_extent.

◆ extents() [2/5]

template<class IndexType , std::size_t... exts>
template<class... IndexTypes, std::enable_if_t<(... &&std::is_convertible_v< IndexTypes, index_type >), int > = 0, std::enable_if_t<(sizeof...(IndexTypes)==rank()||sizeof...(IndexTypes)==rank_dynamic()), int > = 0, std::enable_if_t<(... &&std::is_nothrow_constructible_v< index_type, IndexTypes >), int > = 0>
Dune::Std::extents< IndexType, exts >::extents ( IndexTypes... e)
inlineexplicitconstexprnoexcept

Set all extents by the given integral sequence [[pre: all static extents correspond to the given value e]].

◆ extents() [3/5]

template<class IndexType , std::size_t... exts>
template<class I , std::size_t N, std::enable_if_t< std::is_convertible_v< I, index_type >, int > = 0, std::enable_if_t<(N==rank()||N==rank_dynamic()), int > = 0>
Dune::Std::extents< IndexType, exts >::extents ( const std::array< I, N > & e)
inlineconstexprnoexcept

Set all dynamic extents by the given integral array [[pre: all static extents correspond to the given values in e]].

◆ extents() [4/5]

template<class IndexType , std::size_t... exts>
template<class I , std::size_t N, std::enable_if_t< std::is_convertible_v< I, index_type >, int > = 0, std::enable_if_t<(N==rank()||N==rank_dynamic()), int > = 0, std::enable_if_t< std::is_nothrow_constructible_v< index_type, const I & >, int > = 0>
Dune::Std::extents< IndexType, exts >::extents ( Std::span< I, N > e)
inlineconstexprnoexcept

Set all dynamic extents by the given integral array [[pre: all static extents correspond to the given values in e]].

◆ extents() [5/5]

template<class IndexType , std::size_t... exts>
template<class I , std::size_t... e, std::enable_if_t<(sizeof...(e)==rank()), int > = 0, std::enable_if_t<((e==Std::dynamic_extent||exts==Std::dynamic_extent||e==exts) &&...), int > = 0>
Dune::Std::extents< IndexType, exts >::extents ( const extents< I, e... > & other)
inlineconstexprnoexcept

Member Function Documentation

◆ extent()

template<class IndexType , std::size_t... exts>
index_type Dune::Std::extents< IndexType, exts >::extent ( rank_type r) const
inlineconstexprnoexcept

Return the extent of dimension i

◆ rank()

template<class IndexType , std::size_t... exts>
static constexpr rank_type Dune::Std::extents< IndexType, exts >::rank ( )
inlinestaticconstexprnoexcept

The total number of dimensions.

◆ rank_dynamic()

template<class IndexType , std::size_t... exts>
static constexpr rank_type Dune::Std::extents< IndexType, exts >::rank_dynamic ( )
inlinestaticconstexprnoexcept

The number of dimensions with dynamic extent.

◆ static_extent()

template<class IndexType , std::size_t... exts>
static constexpr std::size_t Dune::Std::extents< IndexType, exts >::static_extent ( rank_type r)
inlinestaticconstexprnoexcept

Return the static extent of dimension r or Std::dynamic_extent


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