Lumiera 0.pre.04
»edit your freedom«
Loading...
Searching...
No Matches
StorageFrame< seg, DATA > Struct Template Reference

#include "lib/hetero-data.hpp"

Description

template<size_t seg, typename... DATA>
struct lib::StorageFrame< seg, DATA >

individual storage frame in a chain, holding a data tuple

Definition at line 105 of file hetero-data.hpp.

Public Types

using Tuple = std::tuple< DATA... >
 

Public Member Functions

template<typename SPEC >
void linkInto (HeteroData< SPEC > &)
 Attach a new storage frame at the end of an existing HeteroData-chain.
 
template<typename SPEC >
void detachFrom (HeteroData< SPEC > &)
 cleanly detach this storage frame from the HeteroData prefix-chain.
 
template<size_t slot>
auto & get () noexcept
 
template<typename X >
auto & get () noexcept
 

Additional Inherited Members

- Protected Member Functions inherited from NonCopyable
 ~NonCopyable ()=default
 
 NonCopyable ()=default
 
 NonCopyable (NonCopyable const &)=delete
 
NonCopyableoperator= (NonCopyable const &)=delete
 
- Protected Attributes inherited from StorageLoc
StorageLocnext {nullptr}
 

Member Typedef Documentation

◆ Tuple

template<size_t seg, typename... DATA>
using Tuple = std::tuple<DATA...>

Definition at line 109 of file hetero-data.hpp.

Member Function Documentation

◆ linkInto()

template<size_t seg, typename... DATA>
template<typename SPEC >
void linkInto ( HeteroData< SPEC > &  prefixChain)
inline

Attach a new storage frame at the end of an existing HeteroData-chain.

Template Parameters
segthe number of the separate data segment, must match target
Parameters
prefixChainwith seg - 1 existing chained tuple-segments
Remarks
The core function actually to extend a chain with a new segment, which should have been built using a suitable nested HeteroData::Chain constructor type. Further segments can be defined working from there, since each such constructor in turn has a member type ChainExtension
Note
Always use this strongly typed extension and access path, to prevent out-of-bounds memory access. The actual HeteroData stores no run time type information, and thus a force-cast is necessary internally to access the follow-up data tuple frames. The typing, and especially the seg template parameter used to mark each StorageFrame is the only guard-rail provided, and ensures safe data access.

Definition at line 403 of file hetero-data.hpp.

◆ detachFrom()

template<size_t seg, typename... DATA>
template<typename SPEC >
void detachFrom ( HeteroData< SPEC > &  prefixChain)
inline

cleanly detach this storage frame from the HeteroData prefix-chain.

Definition at line 415 of file hetero-data.hpp.

◆ get() [1/2]

template<size_t seg, typename... DATA>
template<size_t slot>
auto & get ( )
inlinenoexcept

Definition at line 118 of file hetero-data.hpp.

Referenced by WrappedStandardExeBuilder::invokeOriginalBuilder().

+ Here is the caller graph for this function:

◆ get() [2/2]

template<size_t seg, typename... DATA>
template<typename X >
auto & get ( )
inlinenoexcept

Definition at line 119 of file hetero-data.hpp.

Referenced by WrappedStandardExeBuilder::invokeOriginalBuilder().

+ Here is the caller graph for this function:
+ Inheritance diagram for StorageFrame< seg, DATA >:
+ Collaboration diagram for StorageFrame< seg, DATA >:

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