opm-simulators
Loading...
Searching...
No Matches
propertysystem.hh File Reference

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

#include <dune/common/classname.hh>
#include <tuple>
#include <type_traits>

Go to the source code of this file.

Classes

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

Namespaces

namespace  Opm
 This file contains a set of helper functions used by VFPProd / VFPInj.
namespace  Opm::Properties::Detail
 implementation details for template meta programming

Typedefs

template<class ... Tuples>
using Opm::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 Opm::GetProp = typename Properties::Detail::GetPropImpl<TypeTag, Property>::type
 get the type of a property (equivalent to old macro GET_PROP(...))
template<class TypeTag, template< class, class > class Property>
using Opm::GetPropType = typename Properties::Detail::GetPropImpl<TypeTag, Property>::type::type
 get the type alias defined in the property (equivalent to old macro GET_PROP_TYPE(...))
template<class TypeTag, class SpliceTypeTag, template< class, class > class Property>
using Opm::GetSplicePropType = typename Properties::Detail::GetSplicePropImpl<TypeTag, SpliceTypeTag, Property>::type::type

Functions

template<class P>
constexpr auto Opm::Properties::Detail::isDefinedProperty (int) -> decltype(std::integral_constant< bool, !std::is_same< typename P::type, UndefinedProperty >::value >{})
 check if a property P is defined
template<class P>
constexpr std::true_type Opm::Properties::Detail::isDefinedProperty (...)
 fall back if a Property is defined
template<class T>
constexpr auto Opm::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 Opm::Properties::Detail::hasParentTypeTag (...)
 fall back if a TypeTag doesn't inherit
template<class S>
constexpr auto Opm::Properties::Detail::isDefinedSplice (int) -> decltype(std::integral_constant< bool, !std::is_same< typename S::type, std::tuple<> >::value >{})
 check if a splice S is defined
template<class S>
constexpr std::true_type Opm::Properties::Detail::isDefinedSplice (...)
 fall back if a splice is defined
template<class TypeTag, template< class, class > class Property>
constexpr auto Opm::getPropValue ()
 get the value data member of a property

Detailed Description

The Opm property system, traits with inheritance.

Author
Timo Koch