1 #ifndef DUNE_FEM_COMMON_TYPEINDEXEDTUPLE_HH 2 #define DUNE_FEM_COMMON_TYPEINDEXEDTUPLE_HH 4 #include <dune/common/tuples.hh> 5 #include <dune/common/tupleutility.hh> 18 template<
class Tuple,
class Types >
24 static const int value = Dune::FirstTypeIndex< Types, T >::value;
28 template<
class T,
bool contained >
31 typedef typename std::tuple_element< Position< T >::value, Tuple >::type Type;
32 static Type&
at( Tuple& tuple )
34 return Dune::get< Position< T >::value >( tuple );
36 static const Type&
at(
const Tuple& tuple )
38 return Dune::get< Position< T >::value >( tuple );
44 struct ValueBase< T, false >
47 static Type&
at( Tuple& tuple )
51 static const Type&
at(
const Tuple& tuple )
65 struct Value :
public ValueBase< T, Contains< T >::value >
75 typename Value< T >::Type &
at ()
82 const typename Value< T >::Type &
at ()
const 96 const typename Value< T >::Type &
operator[] (
const T & )
const 106 operator Tuple & () {
return tuple_; }
109 operator const Tuple & ()
const {
return tuple_; }
120 template<
int i,
class Tuple,
class Types >
121 typename tuple_element< i, Tuple >::type &
124 return get< i >(
static_cast< Tuple &
>( tuple ) );
127 template<
int i,
class Tuple,
class Types >
128 const typename tuple_element< i, Tuple >::type &
131 return get< i >(
static_cast< const Tuple &
>( tuple ) );
146 template<
size_t i,
class Tuple,
class Types >
149 typedef typename tuple_element< i, Tuple >::type
type;
154 #endif // #ifndef DUNE_FEM_COMMON_TYPEINDEXEDTUPLE_HH Value< T >::Type & at()
return reference to tuple member associated with type T
Definition: typeindexedtuple.hh:75
Definition: typeindexedtuple.hh:65
Definition: typeindexedtuple.hh:59
tuple_element< i, Tuple >::type type
Definition: typeindexedtuple.hh:149
TypeIndexedTuple(const Tuple &tuple=Tuple())
Definition: typeindexedtuple.hh:69
Definition: typeindexedtuple.hh:19
const bool active(const T &) const
return true if type T is contained in the tuple
Definition: typeindexedtuple.hh:103
Value< T >::Type & operator[](const T &)
return reference to tuple member associated with type T (integral_constant)
Definition: typeindexedtuple.hh:89
Definition: coordinate.hh:4
Definition: tupleutility.hh:168
#define DUNE_CLOSE_TUPLE_NAMESPACE
Definition: tupleutility.hh:13
#define DUNE_OPEN_TUPLE_NAMESPACE
Definition: tupleutility.hh:12
const Value< T >::Type & at() const
return reference to tuple member associated with type T
Definition: typeindexedtuple.hh:82