dune-common 2.11
Loading...
Searching...
No Matches
Dune::HybridMultiIndex< T > Class Template Reference

A hybrid multi-index class that supports both compile time and run time indices. More...

#include <dune/common/hybridmultiindex.hh>

Public Types

using index_sequence = std::index_sequence_for< T... >
 An index_sequence for the entries in this HybridMultiIndex.
 

Public Member Functions

constexpr HybridMultiIndex ()=default
 
constexpr HybridMultiIndex (const HybridMultiIndex &tp)=default
 
constexpr HybridMultiIndex (HybridMultiIndex &&tp)=default
 
constexpr HybridMultiIndexoperator= (const HybridMultiIndex &tp)=default
 
constexpr HybridMultiIndexoperator= (HybridMultiIndex &&tp)=default
 
constexpr HybridMultiIndex (std::tuple< T... > t)
 Constructor from a std::tuple
 
template<typename... I>
requires ((sizeof...(T) > 0 && sizeof...(I) == sizeof...(T)) and ((std::is_integral_v<I> or Dune::IsIntegralConstant<I>::value) && ...))
constexpr HybridMultiIndex (I... i)
 Constructor from arguments.
 
template<std::size_t i>
requires (sizeof...(T) > i)
constexpr auto get () const
 Get the index value at position pos.
 
template<std::size_t i>
requires (sizeof...(T) > i)
constexpr auto operator[] (Dune::index_constant< i >) const
 Get the index value at position pos.
 
constexpr std::size_t operator[] (std::size_t pos) const
 Get the index value at position pos.
 
template<std::size_t i>
requires (sizeof...(T) > i)
constexpr auto element (Dune::index_constant< i > pos={}) const
 Get the last index value.
 
constexpr std::size_t element (std::size_t pos) const
 Get the index value at position pos.
 
template<std::size_t n = sizeof...(T)>
requires (n > 0 && n == sizeof...(T))
constexpr auto front () const
 Get the first index value. Only available in non-empty multi-indices.
 
template<std::size_t n = sizeof...(T)>
requires (n > 0 && n == sizeof...(T))
constexpr auto back () const
 Get the last index value. Only available in non-empty multi-indices.
 

Static Public Member Functions

static constexpr index_sequence enumerate ()
 Returns an index_sequence for enumerating the components of this HybridMultiIndex.
 
static constexpr std::size_t size ()
 Get the size (length) of this multi-index.
 
static constexpr std::size_t max_size ()
 Get the size (length) of this multi-index.
 

Friends

template<class... Head, class... Other>
constexpr auto join (const HybridMultiIndex< Head... > &, const Other &...)
 

Detailed Description

template<typename... T>
class Dune::HybridMultiIndex< T >

A hybrid multi-index class that supports both compile time and run time indices.

A HybridMultiIndex supports storing a combination of run time and compile time indices. This allows to construct multi-indices that provide sufficient information for accessing nested multi-type containers.

Note
Internally all indices are stored as std::size_t or std::integral_constant<std::size_t,v>. The latter is the same as Dune::index_constant<v>.

Member Typedef Documentation

◆ index_sequence

template<typename... T>
using Dune::HybridMultiIndex< T >::index_sequence = std::index_sequence_for<T...>

An index_sequence for the entries in this HybridMultiIndex.

Constructor & Destructor Documentation

◆ HybridMultiIndex() [1/5]

template<typename... T>
constexpr Dune::HybridMultiIndex< T >::HybridMultiIndex ( )
constexprdefault

◆ HybridMultiIndex() [2/5]

template<typename... T>
constexpr Dune::HybridMultiIndex< T >::HybridMultiIndex ( const HybridMultiIndex< T > &  tp)
constexprdefault

◆ HybridMultiIndex() [3/5]

template<typename... T>
constexpr Dune::HybridMultiIndex< T >::HybridMultiIndex ( HybridMultiIndex< T > &&  tp)
constexprdefault

◆ HybridMultiIndex() [4/5]

template<typename... T>
constexpr Dune::HybridMultiIndex< T >::HybridMultiIndex ( std::tuple< T... >  t)
inlineexplicitconstexpr

Constructor from a std::tuple

◆ HybridMultiIndex() [5/5]

template<typename... T>
template<typename... I>
requires ((sizeof...(T) > 0 && sizeof...(I) == sizeof...(T)) and ((std::is_integral_v<I> or Dune::IsIntegralConstant<I>::value) && ...))
constexpr Dune::HybridMultiIndex< T >::HybridMultiIndex ( I...  i)
inlineexplicitconstexpr

Constructor from arguments.

Member Function Documentation

◆ back()

template<typename... T>
template<std::size_t n = sizeof...(T)>
requires (n > 0 && n == sizeof...(T))
constexpr auto Dune::HybridMultiIndex< T >::back ( ) const
inlineconstexpr

Get the last index value. Only available in non-empty multi-indices.

◆ element() [1/2]

template<typename... T>
template<std::size_t i>
requires (sizeof...(T) > i)
constexpr auto Dune::HybridMultiIndex< T >::element ( Dune::index_constant< i >  pos = {}) const
inlineconstexpr

Get the last index value.

◆ element() [2/2]

template<typename... T>
constexpr std::size_t Dune::HybridMultiIndex< T >::element ( std::size_t  pos) const
inlineconstexpr

Get the index value at position pos.

◆ enumerate()

template<typename... T>
static constexpr index_sequence Dune::HybridMultiIndex< T >::enumerate ( )
inlinestaticconstexpr

Returns an index_sequence for enumerating the components of this HybridMultiIndex.

◆ front()

template<typename... T>
template<std::size_t n = sizeof...(T)>
requires (n > 0 && n == sizeof...(T))
constexpr auto Dune::HybridMultiIndex< T >::front ( ) const
inlineconstexpr

Get the first index value. Only available in non-empty multi-indices.

◆ get()

template<typename... T>
template<std::size_t i>
requires (sizeof...(T) > i)
constexpr auto Dune::HybridMultiIndex< T >::get ( ) const
inlineconstexpr

Get the index value at position pos.

The get member function is required by the std-tuple-protocol which e.g. enables structured bindings.

◆ max_size()

template<typename... T>
static constexpr std::size_t Dune::HybridMultiIndex< T >::max_size ( )
inlinestaticconstexpr

Get the size (length) of this multi-index.

◆ operator=() [1/2]

template<typename... T>
constexpr HybridMultiIndex & Dune::HybridMultiIndex< T >::operator= ( const HybridMultiIndex< T > &  tp)
constexprdefault

◆ operator=() [2/2]

template<typename... T>
constexpr HybridMultiIndex & Dune::HybridMultiIndex< T >::operator= ( HybridMultiIndex< T > &&  tp)
constexprdefault

◆ operator[]() [1/2]

template<typename... T>
template<std::size_t i>
requires (sizeof...(T) > i)
constexpr auto Dune::HybridMultiIndex< T >::operator[] ( Dune::index_constant< i >  ) const
inlineconstexpr

Get the index value at position pos.

◆ operator[]() [2/2]

template<typename... T>
constexpr std::size_t Dune::HybridMultiIndex< T >::operator[] ( std::size_t  pos) const
inlineconstexpr

Get the index value at position pos.

◆ size()

template<typename... T>
static constexpr std::size_t Dune::HybridMultiIndex< T >::size ( )
inlinestaticconstexpr

Get the size (length) of this multi-index.

Friends And Related Symbol Documentation

◆ join

template<typename... T>
template<class... Head, class... Other>
constexpr auto join ( const HybridMultiIndex< Head... > &  ,
const Other &  ... 
)
friend

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