dune-common 3.0-git
Classes | Namespaces | Functions
hybridutilities.hh File Reference
#include <tuple>
#include <utility>
#include <dune/common/typeutilities.hh>
#include <dune/common/fvector.hh>
#include <dune/common/indices.hh>

Go to the source code of this file.

Classes

class  Dune::Hybrid::Impl::StaticIntegralRange< Begin, End >
 
class  Dune::Hybrid::Impl::DynamicIntegralRange< T >
 

Namespaces

namespace  Dune
 Dune namespace.
 
namespace  Dune::Hybrid
 
namespace  Dune::Hybrid::Impl
 

Functions

template<class T , int i>
constexpr auto Dune::Hybrid::Impl::size (const Dune::FieldVector< T, i > *, const PriorityTag< 5 > &) -> decltype(std::integral_constant< std::size_t, i >())
 
template<class T , T... t, class Index >
constexpr auto Dune::Hybrid::Impl::size (std::integer_sequence< T, t... >, PriorityTag< 4 >)
 
template<class T >
constexpr auto Dune::Hybrid::Impl::size (const T *, const PriorityTag< 3 > &) -> decltype(std::integral_constant< std::size_t, std::tuple_size< T >::value >())
 
template<class T >
constexpr auto Dune::Hybrid::Impl::size (const T *, const PriorityTag< 1 > &) -> decltype(std::integral_constant< std::size_t, T::size()>())
 
template<class T >
constexpr auto Dune::Hybrid::Impl::size (const T *t, const PriorityTag< 0 > &)
 
template<class T >
constexpr auto Dune::Hybrid::size (const T &t)
 Size query.
 
template<class Container , class Index , std::enable_if_t< IsTuple< std::decay_t< Container > >::value, int > = 0>
constexpr decltype(auto) Dune::Hybrid::Impl::elementAt (Container &&c, Index &&, PriorityTag< 2 >)
 
template<class T , T... t, class Index >
constexpr decltype(auto) Dune::Hybrid::Impl::elementAt (std::integer_sequence< T, t... > c, Index &&, PriorityTag< 1 >)
 
template<class Container , class Index >
constexpr decltype(auto) Dune::Hybrid::Impl::elementAt (Container &&c, Index &&i, PriorityTag< 0 >)
 
template<class Container , class Index >
constexpr decltype(auto) Dune::Hybrid::elementAt (Container &&c, Index &&i)
 Get element at given position from container.
 
template<class Begin , class End , std::enable_if_t< IsIntegralConstant< Begin >::value and IsIntegralConstant< End >::value, int > = 0>
constexpr auto Dune::Hybrid::Impl::integralRange (const Begin &begin, const End &end, const PriorityTag< 1 > &)
 
template<class Begin , class End >
auto Dune::Hybrid::Impl::integralRange (const Begin &begin, const End &end, const PriorityTag< 0 > &)
 
template<class Begin , class End >
constexpr auto Dune::Hybrid::integralRange (const Begin &begin, const End &end)
 Create an integral range.
 
template<class End >
constexpr auto Dune::Hybrid::integralRange (const End &end)
 Create an integral range starting from 0.
 
template<class Range , class F >
constexpr void Dune::Hybrid::forEach (Range &&range, F &&f)
 Range based for loop.
 
template<class Range , class T , class F >
Dune::Hybrid::accumulate (Range &&range, T value, F &&f)
 Accumulate values.
 
template<class Condition , class IfFunc , class ElseFunc >
decltype(auto) Dune::Hybrid::ifElse (const Condition &condition, IfFunc &&ifFunc, ElseFunc &&elseFunc)
 A conditional expression.
 
template<class Condition , class IfFunc >
void Dune::Hybrid::ifElse (const Condition &condition, IfFunc &&ifFunc)
 A conditional expression.
 
template<class T1 , class T2 >
constexpr auto Dune::Hybrid::equals (T1 &&t1, T2 &&t2)
 Equality comparison.
 
template<class Cases , class Value , class Branches , class ElseBranch >
constexpr decltype(auto) Dune::Hybrid::switchCases (const Cases &cases, const Value &value, Branches &&branches, ElseBranch &&elseBranch)
 Switch statement.
 
template<class Cases , class Value , class Branches >
constexpr void Dune::Hybrid::switchCases (const Cases &cases, const Value &value, Branches &&branches)
 Switch statement.