dune-common 2.11
Loading...
Searching...
No Matches
hybridmultiindex.hh File Reference
#include <cstddef>
#include <cassert>
#include <iostream>
#include <type_traits>
#include <dune/common/typetraits.hh>
#include <dune/common/indices.hh>
#include <dune/common/hybridutilities.hh>

Go to the source code of this file.

Classes

class  Dune::HybridMultiIndex< T >
 A hybrid multi-index class that supports both compile time and run time indices. More...
struct  std::tuple_size< Dune::HybridMultiIndex< T... > >
struct  std::tuple_element< i, Dune::HybridMultiIndex< T... > >

Namespaces

namespace  Dune
 Dune namespace
namespace  std
 STL namespace.

Functions

template<typename... I>
requires (((std::is_integral_v<I> or Dune::IsIntegralConstant<I>::value) && ...))
 Dune::HybridMultiIndex (I... i) -> HybridMultiIndex< decltype(Impl::castToHybridSizeT(i))... >
template<typename... I>
 Dune::HybridMultiIndex (std::tuple< I... >) -> HybridMultiIndex< I... >
template<typename... T>
constexpr auto Dune::back (const HybridMultiIndex< T... > &tp) -> decltype(tp.back())
 Returns a copy of the last element of the HybridMultiIndex.
template<typename... T>
constexpr auto Dune::front (const HybridMultiIndex< T... > &tp) -> decltype(tp.front())
 Returns a copy of the first element of the HybridMultiIndex.
template<typename... T>
constexpr HybridMultiIndex< T..., std::size_t > Dune::push_back (const HybridMultiIndex< T... > &tp, std::size_t i)
 Appends a run time index to a HybridMultiIndex.
template<std::size_t i, typename... T>
constexpr HybridMultiIndex< T..., index_constant< i > > Dune::push_back (const HybridMultiIndex< T... > &tp, index_constant< i > iConstant={})
 Appends a compile time index to a HybridMultiIndex.
template<typename... T>
constexpr HybridMultiIndex< std::size_t, T... > Dune::push_front (const HybridMultiIndex< T... > &tp, std::size_t i)
 Prepends a run time index to a HybridMultiIndex.
template<std::size_t i, typename... T>
constexpr HybridMultiIndex< index_constant< i >, T... > Dune::push_front (const HybridMultiIndex< T... > &tp, index_constant< i > iConstant={})
 Prepends a compile time index to a HybridMultiIndex.
template<typename I, typename... T>
requires (sizeof...(T) > 0)
constexpr auto Dune::accumulate_back (const HybridMultiIndex< T... > &tp, I i)
 Hybrid utility that accumulates to the back of a multi-index.
template<typename I, typename... T>
requires (sizeof...(T) > 0)
constexpr auto Dune::accumulate_front (const HybridMultiIndex< T... > &tp, I i)
 Hybrid utility that accumulates to the front of a multi-index.
template<class... Head, class... Other>
constexpr auto Dune::join (const HybridMultiIndex< Head... > &head, const Other &... tail)
 Join two hybrid multi-indices into one.
template<class... T>
constexpr auto Dune::reverse (const HybridMultiIndex< T... > &tp)
 Reverses the order of the elements in the multi-index.
template<class... T>
requires (sizeof...(T) > 0)
constexpr auto Dune::pop_front (const HybridMultiIndex< T... > &tp)
 Removes first index on a HybridMultiIndex.
template<class... T>
requires (sizeof...(T) > 0)
constexpr auto Dune::pop_back (const HybridMultiIndex< T... > &tp)
 Removes last index on a HybridMultiIndex.
template<class... S, class... T>
constexpr bool Dune::operator== (const HybridMultiIndex< S... > &lhs, const HybridMultiIndex< T... > &rhs)
 Compare two HybridMultiIndexs for value equality.
template<class S, S... lhs, class T, T... rhs>
constexpr auto Dune::operator== (const HybridMultiIndex< std::integral_constant< S, lhs >... > &, const HybridMultiIndex< std::integral_constant< T, rhs >... > &)
 Overload for purely static HybridMultiIndexs.
template<class... S, class... T>
constexpr auto Dune::operator!= (const HybridMultiIndex< S... > &lhs, const HybridMultiIndex< T... > &rhs)
 Compare two HybridMultiIndexs for inequality.
template<class S, S... lhs, class T, T... rhs>
constexpr auto Dune::operator!= (const HybridMultiIndex< std::integral_constant< S, lhs >... > &, const HybridMultiIndex< std::integral_constant< T, rhs >... > &)
 Compare two static HybridMultiIndexs for inequality.
template<typename... T>
std::ostream & Dune::operator<< (std::ostream &os, const HybridMultiIndex< T... > &tp)
 Dumps a HybridMultiIndex to a stream.