3.2-git
DUNE for Multi-{Phase, Component, Scale, Physics, ...} flow and transport in porous media
Classes | Namespaces | Typedefs | Functions
propertysystem.hh File Reference

The Dumux property system, traits with inheritance. More...

#include <tuple>
#include <type_traits>

Go to the source code of this file.

Description

The Dumux property system, traits with inheritance.

Author
Timo Koch

Classes

struct  Dumux::Properties::UndefinedProperty
 a tag to mark properties as undefined More...
 
struct  Dumux::Properties::Detail::GetNextTypeTag< TypeTag, Property, std::tuple< LastTypeTag >, std::enable_if_t< hasParentTypeTag< LastTypeTag >(int{}), void > >
 
struct  Dumux::Properties::Detail::GetNextTypeTag< TypeTag, Property, std::tuple< LastTypeTag >, std::enable_if_t<!hasParentTypeTag< LastTypeTag >(int{}), void > >
 
struct  Dumux::Properties::Detail::GetNextTypeTag< TypeTag, Property, std::tuple< FirstTypeTag, Args... >, std::enable_if_t< hasParentTypeTag< FirstTypeTag >(int{}), void > >
 
struct  Dumux::Properties::Detail::GetNextTypeTag< TypeTag, Property, std::tuple< FirstTypeTag, Args... >, std::enable_if_t<!hasParentTypeTag< FirstTypeTag >(int{}), void > >
 
struct  Dumux::Properties::Detail::GetDefined< TypeTag, Property, std::tuple< LastTypeTag > >
 
struct  Dumux::Properties::Detail::GetDefined< TypeTag, Property, std::tuple< FirstTypeTag, Args... > >
 
struct  Dumux::Properties::Detail::GetPropImpl< TypeTag, Property >
 helper struct to extract get the Property specilization given a TypeTag, asserts that the property is defined More...
 

Namespaces

namespace  Dumux
 
namespace  Dumux::Properties
 
namespace  Dumux::Properties::Detail
 implementation details for template meta programming
 

Typedefs

template<class ... Tuples>
using Dumux::Properties::Detail::ConCatTuples = decltype(std::tuple_cat(std::declval< Tuples >()...))
 helper alias to concatenate multiple tuples More...
 
template<class TypeTag , template< class, class > class Property>
using Dumux::GetProp = typename Properties::Detail::GetPropImpl< TypeTag, Property >::type
 get the type of a property (equivalent to old macro GET_PROP(...)) More...
 
template<class TypeTag , template< class, class > class Property>
using Dumux::GetPropType = typename Properties::Detail::GetPropImpl< TypeTag, Property >::type::type
 get the type alias defined in the property (equivalent to old macro GET_PROP_TYPE(...)) More...
 

Functions

template<class P >
constexpr auto Dumux::Properties::Detail::isDefinedProperty (int) -> decltype(std::integral_constant< bool, !std::is_same< typename P::type, UndefinedProperty >::value >{})
 check if a property P is defined More...
 
template<class P >
constexpr std::true_type Dumux::Properties::Detail::isDefinedProperty (...)
 fall back if a Property is defined More...
 
template<class T >
constexpr auto Dumux::Properties::Detail::hasParentTypeTag (int) -> decltype(std::declval< typename T::InheritsFrom >(), std::enable_if_t<!std::is_same< typename T::InheritsFrom, void >::value, int >{}, std::true_type{})
 
template<class T >
constexpr std::false_type Dumux::Properties::Detail::hasParentTypeTag (...)
 fall back if a TypeTag doesn't inherit More...
 
template<class TypeTag , template< class, class > class Property>
constexpr auto Dumux::getPropValue ()
 get the value data member of a property More...
 
Include dependency graph for propertysystem.hh: