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 >:

## 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 HybridMultiIndex & | operator= (const HybridMultiIndex &tp)=default
constexpr HybridMultiIndex & | operator= (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 | ( |  | ) |

constexpr default

## HybridMultiIndex() [2/5]

template<typename... T>

Dune::HybridMultiIndex< T >::HybridMultiIndex | ( | const HybridMultiIndex< T > & | tp | ) |

constexpr default

## HybridMultiIndex() [3/5]

template<typename... T>

Dune::HybridMultiIndex< T >::HybridMultiIndex | ( | HybridMultiIndex< T > && | tp | ) |

constexpr default

## HybridMultiIndex() [4/5]

template<typename... T>

Dune::HybridMultiIndex< T >::HybridMultiIndex | ( | std::tuple< T... > | t | ) |

inline explicit constexpr

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 | ) |

inline explicit constexpr

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

inline nodiscard constexpr

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

inline nodiscard constexpr

Get the last index value.

## element() [2/2]

template<typename... T>

std::size_t Dune::HybridMultiIndex< T >::element | ( | std::size_t | pos | ) | const

inline nodiscard constexpr

Get the index value at position pos.

## enumerate()

template<typename... T>

constexpr index_sequence Dune::HybridMultiIndex< T >::enumerate | ( |  | ) |

inline static nodiscard constexpr

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

inline nodiscard constexpr

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

inline nodiscard constexpr

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 | ( |  | ) |

inline static nodiscard constexpr

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

## operator=() [1/2]

template<typename... T>

HybridMultiIndex & Dune::HybridMultiIndex< T >::operator= | ( | const HybridMultiIndex< T > & | tp | ) |

constexpr default

## operator=() [2/2]

template<typename... T>

HybridMultiIndex & Dune::HybridMultiIndex< T >::operator= | ( | HybridMultiIndex< T > && | tp | ) |

constexpr default

## 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

inline nodiscard constexpr

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

inline nodiscard constexpr

Get the index value at position pos.

## size()

template<typename... T>

constexpr std::size_t Dune::HybridMultiIndex< T >::size | ( |  | ) |

inline static nodiscard constexpr

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

## Friends And Related Symbol Documentation

## 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:

- hybridmultiindex.hh