OpenLB 1.7
Loading...
Searching...
No Matches
Public Types | Static Public Member Functions | List of all members
olb::descriptors::CONCRETE_FIELD_TUPLE< PARAMETERS, FIELDS > Struct Template Reference

Tuple of concretized field declarations. More...

#include <descriptorBase.h>

+ Inheritance diagram for olb::descriptors::CONCRETE_FIELD_TUPLE< PARAMETERS, FIELDS >:
+ Collaboration diagram for olb::descriptors::CONCRETE_FIELD_TUPLE< PARAMETERS, FIELDS >:

Public Types

using parameter_tuple_t = PARAMETERS
 
template<typename BASE >
using derivedField
 Returns FIELD by provided BASE.
 
- Public Types inherited from olb::descriptors::FIELD_TUPLE< FIELDS... >
using fields_t
 
using decompose_into
 
using filter
 Returns FIELD_TUPLE with subset of FIELDS meeting COND.
 
- Public Types inherited from olb::meta::list< FIELDS... >
using get
 Returns INDEXth type of TYPES.
 
using decompose_into
 Export TYPES into arbitrary variadic template COLLECTION.
 
using map
 
using map_to_callable_result
 
using push
 
using append
 
using include
 Merge TYPES and UYPES into new list.
 
using first_with_base
 Returns first type of TYPES that is derived from BASE.
 
using first_with_base_or_fallback
 Returns first type of TYPES that is derived from BASE.
 

Static Public Member Functions

template<typename ... NESTED_FIELDS>
static constexpr bool providesNested ()
 Returns whether WANTED_FIELD (last in NESTED_FIELDS) is provided by CONCRETE_FIELD_TUPLE.
 
template<typename FIELD = void>
static constexpr std::size_t size ()
 Returns size of FIELD if given or of whole tuple if not.
 
- Static Public Member Functions inherited from olb::descriptors::FIELD_TUPLE< FIELDS... >
static constexpr bool provides ()
 Returns whether WANTED_FIELD is contained in FIELDS.
 
static bool provides (std::type_index field)
 Returns whether field is contained in FIELDS.
 
- Static Public Member Functions inherited from olb::meta::list< FIELDS... >
static constexpr unsigned index ()
 Index of first instance of TYPE in TYPES.
 
static constexpr void for_each (F f)
 Calls f for each type of TYPES by-value (in reversed order!)
 
static constexpr bool contains ()
 

Additional Inherited Members

- Public Member Functions inherited from olb::descriptors::FIELD_TUPLE< FIELDS... >
 FIELD_TUPLE ()=delete
 Deleted constructor to enforce pure usage as type and prevent implicit narrowing conversions.
 
- Static Public Attributes inherited from olb::descriptors::FIELD_TUPLE< FIELDS... >
static constexpr std::size_t field_count
 Number of fields.
 
- Static Public Attributes inherited from olb::meta::list< FIELDS... >
static constexpr unsigned size
 

Detailed Description

template<typename PARAMETERS, typename... FIELDS>
struct olb::descriptors::CONCRETE_FIELD_TUPLE< PARAMETERS, FIELDS >

Tuple of concretized field declarations.

Definition at line 92 of file descriptorBase.h.

Member Typedef Documentation

◆ derivedField

template<typename PARAMETERS , typename... FIELDS>
template<typename BASE >
using olb::descriptors::CONCRETE_FIELD_TUPLE< PARAMETERS, FIELDS >::derivedField
Initial value:
std::conditional_t<
typename meta::list_item_with_base_default_base<BASE,FIELDS...>::type,
FIELDS...
>(),
void
>
constexpr bool contains()
Returns true iff a given type list contains WANTED.
Definition meta.h:125
std::conditional_t< std::is_base_of< BASE, HEAD >::value, HEAD, typename list_item_with_base_default_base< BASE, TAIL... >::type > type
Definition meta.h:146

Returns FIELD by provided BASE.

returns void, if FIELD_TUPE does not provide BASE field

Definition at line 100 of file descriptorBase.h.

◆ parameter_tuple_t

template<typename PARAMETERS , typename... FIELDS>
using olb::descriptors::CONCRETE_FIELD_TUPLE< PARAMETERS, FIELDS >::parameter_tuple_t = PARAMETERS

Definition at line 93 of file descriptorBase.h.

Member Function Documentation

◆ providesNested()

template<typename PARAMETERS , typename... FIELDS>
template<typename ... NESTED_FIELDS>
static constexpr bool olb::descriptors::CONCRETE_FIELD_TUPLE< PARAMETERS, FIELDS >::providesNested ( )
inlinestaticconstexpr

Returns whether WANTED_FIELD (last in NESTED_FIELDS) is provided by CONCRETE_FIELD_TUPLE.

Offers the same funcionality as it overloaded pendant in in FIELD_TUPLE, however allows beeing called with multiple BASE types (as currently used in the particle framework)

Definition at line 115 of file descriptorBase.h.

References olb::meta::derived_type_in_nested< BASE, HEAD, TAIL >::contains().

+ Here is the call graph for this function:

◆ size()

template<typename PARAMETERS , typename... FIELDS>
template<typename FIELD = void>
static constexpr std::size_t olb::descriptors::CONCRETE_FIELD_TUPLE< PARAMETERS, FIELDS >::size ( )
inlinestaticconstexpr

Returns size of FIELD if given or of whole tuple if not.

Works for all fields, even if they are not provided by this instantiation of CONCRETE_FIELD_TUPLE.

Definition at line 125 of file descriptorBase.h.

126 {
127 if constexpr (std::is_void_v<FIELD>) {
128 return (parameter_tuple_t::template size<FIELDS>() + ... + 0);
129 } else {
130 return parameter_tuple_t::template size<FIELD>();
131 }
132 __builtin_unreachable();
133 }

The documentation for this struct was generated from the following file: