3.4
DUNE for Multi-{Phase, Component, Scale, Physics, ...} flow and transport in porous media
Loading...
Searching...
No Matches
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
template<class TypeTag, template< class, class > class Property>
using Dumux::GetProp = typename Properties::Detail::GetPropImpl<TypeTag, Property>::type
 get the type of a property
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

Functions

template<class P>
constexpr auto Dumux::Properties::Detail::isDefinedProperty (int) -> decltype(std::integral_constant< bool, !std::is_same_v< typename P::type, UndefinedProperty > >{})
 check if a property P is defined
template<class P>
constexpr std::true_type Dumux::Properties::Detail::isDefinedProperty (...)
 fall back if a Property is defined
template<class T>
constexpr auto Dumux::Properties::Detail::hasParentTypeTag (int) -> decltype(std::declval< typename T::InheritsFrom >(), std::true_type{})
 check if a TypeTag inherits from other TypeTags
template<class T>
constexpr std::false_type Dumux::Properties::Detail::hasParentTypeTag (...)
 fall back if a TypeTag doesn't inherit
template<class TypeTag, template< class, class > class Property>
constexpr auto Dumux::getPropValue ()
 get the value data member of a property