OpenLB 1.7
Loading...
Searching...
No Matches
Classes | Public Types | Public Member Functions | Public Attributes | List of all members
olb::utilities::TypeIndexedTuple< MAP > Struct Template Reference

Mapping between KEYs and instances of type VALUEs. More...

#include <typeIndexedContainers.h>

+ Inheritance diagram for olb::utilities::TypeIndexedTuple< MAP >:
+ Collaboration diagram for olb::utilities::TypeIndexedTuple< MAP >:

Classes

struct  generator
 

Public Types

using tuple_t = typename MAP::values_t::template decompose_into<std::tuple>
 Storage of values in MAP-order.
 
using map_t = MAP
 
template<typename KEY >
using value_t = typename MAP::template value<KEY>
 

Public Member Functions

 TypeIndexedTuple () any_platform=default
 
 TypeIndexedTuple (TypeIndexedTuple &) any_platform=default
 
 TypeIndexedTuple (TypeIndexedTuple &&rhs) any_platform=default
 
template<typename F >
 TypeIndexedTuple (F f) any_platform
 
template<typename KEY >
constexpr bool contains (meta::id< KEY >=meta::id< KEY >{}) any_platform
 Return true iff MAP contains KEY.
 
template<unsigned I>
constexpr auto & get () any_platform
 Access Ith element.
 
template<unsigned I>
constexpr const auto & get () const any_platform
 Access Ith element.
 
template<typename KEY >
constexpr auto & get (meta::id< KEY >=meta::id< KEY >{}) any_platform
 Access by KEY of MAP.
 
template<typename KEY >
constexpr const auto & get (meta::id< KEY >=meta::id< KEY >{}) const any_platform
 Access by KEY of MAP.
 
template<typename KEY >
constexpr void set (typename MAP::template value< KEY > value) any_platform
 Set value assigned to KEY of MAP.
 
template<typename KEY >
constexpr void set (meta::id< KEY >, typename MAP::template value< KEY > value) any_platform
 
template<typename F >
constexpr void for_each (F f) any_platform
 Calls f(name, value) for all pairs.
 
template<typename F >
constexpr auto exchange_values (F f) any_platform
 Returns new TypeIndexedTuple with same keys but values generated by f(key)
 

Public Attributes

tuple_t tuple
 

Detailed Description

template<typename MAP>
struct olb::utilities::TypeIndexedTuple< MAP >

Mapping between KEYs and instances of type VALUEs.

Definition at line 183 of file typeIndexedContainers.h.

Member Typedef Documentation

◆ map_t

template<typename MAP >
using olb::utilities::TypeIndexedTuple< MAP >::map_t = MAP

Definition at line 186 of file typeIndexedContainers.h.

◆ tuple_t

template<typename MAP >
using olb::utilities::TypeIndexedTuple< MAP >::tuple_t = typename MAP::values_t::template decompose_into<std::tuple>

Storage of values in MAP-order.

Definition at line 185 of file typeIndexedContainers.h.

◆ value_t

template<typename MAP >
template<typename KEY >
using olb::utilities::TypeIndexedTuple< MAP >::value_t = typename MAP::template value<KEY>

Definition at line 207 of file typeIndexedContainers.h.

Constructor & Destructor Documentation

◆ TypeIndexedTuple() [1/4]

template<typename MAP >
olb::utilities::TypeIndexedTuple< MAP >::TypeIndexedTuple ( )
default

◆ TypeIndexedTuple() [2/4]

template<typename MAP >
olb::utilities::TypeIndexedTuple< MAP >::TypeIndexedTuple ( TypeIndexedTuple< MAP > & )
default

◆ TypeIndexedTuple() [3/4]

template<typename MAP >
olb::utilities::TypeIndexedTuple< MAP >::TypeIndexedTuple ( TypeIndexedTuple< MAP > && rhs)
default

◆ TypeIndexedTuple() [4/4]

template<typename MAP >
template<typename F >
olb::utilities::TypeIndexedTuple< MAP >::TypeIndexedTuple ( F f)
inline

Definition at line 203 of file typeIndexedContainers.h.

203 :
204 tuple{typename MAP::keys_t::template decompose_into<generator>{}(f)} { }

Member Function Documentation

◆ contains()

template<typename MAP >
template<typename KEY >
constexpr bool olb::utilities::TypeIndexedTuple< MAP >::contains ( meta::id< KEY > = meta::id<KEY>{})
inlineconstexpr

Return true iff MAP contains KEY.

Definition at line 211 of file typeIndexedContainers.h.

211 {}) any_platform {
212 return MAP::keys_t::template contains<KEY>();
213 }
#define any_platform
Define preprocessor macros for device-side functions, constant storage.
Definition platform.h:78

◆ exchange_values()

template<typename MAP >
template<typename F >
constexpr auto olb::utilities::TypeIndexedTuple< MAP >::exchange_values ( F f)
inlineconstexpr

Returns new TypeIndexedTuple with same keys but values generated by f(key)

Definition at line 258 of file typeIndexedContainers.h.

258 {
259 return TypeIndexedTuple<meta::plain_map<
260 typename MAP::keys_t,
261 typename MAP::keys_t::template map_to_callable_result<F>
262 >>(f);
263 }
TypeIndexedTuple() any_platform=default

◆ for_each()

template<typename MAP >
template<typename F >
constexpr void olb::utilities::TypeIndexedTuple< MAP >::for_each ( F f)
inlineconstexpr

Calls f(name, value) for all pairs.

Definition at line 250 of file typeIndexedContainers.h.

250 {
251 MAP::keys_t::for_each([&](auto key) {
252 f(key, get(key));
253 });
254 }
constexpr auto & get() any_platform
Access Ith element.

References olb::utilities::TypeIndexedTuple< MAP >::get().

+ Here is the call graph for this function:

◆ get() [1/4]

template<typename MAP >
template<unsigned I>
constexpr auto & olb::utilities::TypeIndexedTuple< MAP >::get ( )
inlineconstexpr

Access Ith element.

Definition at line 217 of file typeIndexedContainers.h.

217 {
218 return std::get<I>(tuple);
219 }

References olb::utilities::TypeIndexedTuple< MAP >::tuple.

+ Here is the caller graph for this function:

◆ get() [2/4]

template<typename MAP >
template<unsigned I>
constexpr const auto & olb::utilities::TypeIndexedTuple< MAP >::get ( ) const
inlineconstexpr

Access Ith element.

Definition at line 222 of file typeIndexedContainers.h.

222 {
223 return std::get<I>(tuple);
224 }

References olb::utilities::TypeIndexedTuple< MAP >::tuple.

◆ get() [3/4]

template<typename MAP >
template<typename KEY >
constexpr auto & olb::utilities::TypeIndexedTuple< MAP >::get ( meta::id< KEY > = meta::id<KEY>{})
inlineconstexpr

Access by KEY of MAP.

Definition at line 228 of file typeIndexedContainers.h.

228 {}) any_platform {
229 return get<(MAP::keys_t::template index<KEY>())>();
230 }

◆ get() [4/4]

template<typename MAP >
template<typename KEY >
constexpr const auto & olb::utilities::TypeIndexedTuple< MAP >::get ( meta::id< KEY > = meta::id<KEY>{}) const
inlineconstexpr

Access by KEY of MAP.

Definition at line 233 of file typeIndexedContainers.h.

233 {}) const any_platform {
234 return get<(MAP::keys_t::template index<KEY>())>();
235 }

◆ set() [1/2]

template<typename MAP >
template<typename KEY >
constexpr void olb::utilities::TypeIndexedTuple< MAP >::set ( meta::id< KEY > ,
typename MAP::template value< KEY > value )
inlineconstexpr

Definition at line 244 of file typeIndexedContainers.h.

244 {
245 get<KEY>() = value;
246 }
typename std::integral_constant< TYPE, VALUE >::type value
Identity type to wrap non-type template arguments.
Definition meta.h:96

◆ set() [2/2]

template<typename MAP >
template<typename KEY >
constexpr void olb::utilities::TypeIndexedTuple< MAP >::set ( typename MAP::template value< KEY > value)
inlineconstexpr

Set value assigned to KEY of MAP.

Definition at line 239 of file typeIndexedContainers.h.

239 {
240 get<KEY>() = value;
241 }

Member Data Documentation

◆ tuple

template<typename MAP >
tuple_t olb::utilities::TypeIndexedTuple< MAP >::tuple

Definition at line 187 of file typeIndexedContainers.h.


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