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>

Inheritance diagram for Dune::HybridMultiIndex< T >:
Inheritance graph

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>
Dune::HybridMultiIndex< T >::HybridMultiIndex ( )
constexprdefault

◆ HybridMultiIndex() [2/5]

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

◆ HybridMultiIndex() [3/5]

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

◆ HybridMultiIndex() [4/5]

template<typename... T>
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) && ...))
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))
auto Dune::HybridMultiIndex< T >::back ( ) const
inlinenodiscardconstexpr

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)
auto Dune::HybridMultiIndex< T >::element ( Dune::index_constant< i > pos = {}) const
inlinenodiscardconstexpr

Get the last index value.

◆ element() [2/2]

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

Get the index value at position pos.

◆ enumerate()

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

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))
auto Dune::HybridMultiIndex< T >::front ( ) const
inlinenodiscardconstexpr

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)
auto Dune::HybridMultiIndex< T >::get ( ) const
inlinenodiscardconstexpr

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>
constexpr std::size_t Dune::HybridMultiIndex< T >::max_size ( )
inlinestaticnodiscardconstexpr

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

◆ operator=() [1/2]

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

◆ operator=() [2/2]

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

◆ operator[]() [1/2]

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

Get the index value at position pos.

◆ operator[]() [2/2]

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

Get the index value at position pos.

◆ size()

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

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

◆ join

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

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