Apparatus Version 1.22
ECS data-oriented workflow for Unreal Engine.
Classes | Public Types | Public Member Functions | Static Public Attributes | Friends | List of all members
TChain< ChunkItT, BeltItT, InDefaultParadigm > Struct Template Reference

A group of iterable locked together in a sequence. More...

#include <Chain.h>

Inheritance diagram for TChain< ChunkItT, BeltItT, InDefaultParadigm >:
Inheritance graph
[legend]
Collaboration diagram for TChain< ChunkItT, BeltItT, InDefaultParadigm >:
Collaboration graph
[legend]

Classes

struct  TCursor
 A state of the chain iterating. More...
 

Public Types

enum  { AllowsChanges = ChunkItType::AllowsChanges , AllowsStructuralChanges = ChunkItType::AllowsStructuralChanges , AllowsDirectTraitAccess = ChunkItType::AllowsDirectTraitAccess }
 
using Super = FCommonChain
 
typedef ChunkItT ChunkItType
 
typedef BeltItT BeltItType
 
typedef ChunkItT::SubjectHandleType SubjectHandleType
 The subject handle argument type. More...
 
typedef std::conditional< std::templateis_same< SubjectHandleType, FSolidSubjectHandle >::value, FSubjectHandle, void >::type IncompatibleSubjectHandleType
 A subject handle type, specifically incompatible with the current one used. More...
 
typedef ChunkItT::SubjectivePtrType SubjectivePtrType
 The subjective argument type, including the possible 'const' specification. More...
 
template<EParadigm Paradigm>
using TResultTraitVoidPtr = typename ChunkItT::template TResultTraitVoidPtr< Paradigm >
 The type of a trait void pointer returned by the methods. More...
 
template<typename T , EParadigm Paradigm>
using TResultTraitPtr = typename ChunkItT::template TResultTraitPtr< T, Paradigm >
 The type of a trait pointer returned by the methods. More...
 
template<typename T , EParadigm Paradigm>
using TResultTraitRef = typename ChunkItT::template TResultTraitRef< T, Paradigm >
 The type of a trait reference returned by the methods. More...
 
template<class D >
using TResultDetailPtr = typename ChunkItT::template TResultDetailPtr< D >
 The class of a detail pointer returned by the methods. More...
 
using FCursor = TCursor<>
 Non-templated cursor version. More...
 
- Public Types inherited from FCommonChain
enum  {
  InvalidId = -1 , InvalidSlotIndex = -1 , FirstId = 0 , InvalidCursorId = -1 ,
  DefaultCursorId = 0 , InvalidSegmentIndex = -1
}
 

Public Member Functions

int32 GetId () const
 A unique identifier of an embedded chain. More...
 
EApparatusStatus Reset () override
 Reset the chain. More...
 
template<typename FilterT , typename IterableT , typename AllocatorT >
std::enable_if< std::is_base_of< FFilterIndicator, FilterT >::value, EApparatusStatus >::type Enchain (const FilterT &InFilter, const TArray< IterableT *, AllocatorT > &InIterables)
 Set to chain a set of iterables with a filter. More...
 
int32 FindSegment (const int32 InSlotIndex, int32 &OutLocalIndex, const int32 SegmentOffset=0) const
 Find a certain chain segment by a chain's slot index. More...
 
template<typename ... Ps>
TCursor< Ps... > Iterate (const int32 Offset=0, const int32 Limit=TNumericLimits< int32 >::Max()) const
 Prepare the chain for iterating returning the cursor. More...
 
template<typename MechanicT >
EApparatusStatus Operate (const MechanicT &InMechanic) const
 Process the chain using a functor mechanic. More...
 
template<typename MechanicT >
EApparatusStatus Operate (MechanicT &InMechanic) const
 Process the chain using a functor mechanic. More...
 
template<typename FunctionT >
std::enable_if< std::is_function< FunctionT >::value, EApparatusStatus >::type Operate (FunctionT *const InMechanic) const
 Process the chain using a free function. More...
 
template<EParadigm Paradigm = DefaultParadigm, typename FunctorT = void>
std::enable_if<(IsSolid||(Paradigm<=EParadigm::Unsafe))&&!std::is_void< FunctorT >::value, EApparatusStatus >::type OperateConcurrently (const FunctorT &InMechanic, const int32 ThreadsCountMax, const int32 SlotsPerThreadMin=1, const bool bSync=true) const
 Process the chain using a functor mechanic in a parallel manner. More...
 
template<EParadigm Paradigm = DefaultParadigm, typename FunctorT = void>
std::enable_if<(IsSolid||(Paradigm<=EParadigm::Unsafe))&&!std::is_void< FunctorT >::value, EApparatusStatus >::type OperateConcurrently (FunctorT &InMechanic, const int32 ThreadsCountMax, const int32 SlotsPerThreadMin=1, const bool bSync=true) const
 Process the chain using a functor mechanic in a parallel manner. More...
 
template<EParadigm Paradigm = DefaultParadigm, typename FunctionT = void>
std::enable_if<(IsSolid||(Paradigm<=EParadigm::Unsafe))&&std::is_function< FunctionT >::value, EApparatusStatus >::type OperateConcurrently (FunctionT *const InMechanic, const int32 ThreadsCountMax, const int32 SlotsPerThreadMin=1, const bool bSync=true) const
 Process the chain using a function mechanic in a parallel manner. More...
 
template<typename FunctorT >
EApparatusStatus Operate () const
 Process the chain using a functor mechanic. More...
 
template<typename FunctorT , EParadigm Paradigm = DefaultParadigm>
std::enable_if<(IsSolid||(Paradigm<=EParadigm::Unsafe))&&!std::is_void< FunctorT >::value, EApparatusStatus >::type OperateConcurrently (const int32 ThreadsCountMax, const int32 SlotsPerThreadMin=1, const bool bSync=true) const
 Process the chain using a functor mechanic in a parallel manner. More...
 
bool Begin (const int32 CursorId=DefaultCursorId, const int32 Offset=0, const int32 Limit=TNumericLimits< int32 >::Max()) const
 Begin iterating the chain using an embedded cursor. More...
 
bool Advance (const int32 CursorId=DefaultCursorId) const
 Advance iterating the chain to the next iteration using the embedded cursor. More...
 
bool BeginOrAdvance (const int32 CursorId=DefaultCursorId, const int32 Offset=0, const int32 Limit=TNumericLimits< int32 >::Max()) const
 Begin or advance iterating the chain. More...
 
Iteration State
SubjectHandleType GetSubject (const int32 CursorId=DefaultCursorId) const
 Get the subject of the current iteration. More...
 
SubjectivePtrType GetSubjective (const int32 CursorId=DefaultCursorId) const
 Get the subjective of the current iteration (if any). More...
 
Traits Getting
EApparatusStatus GetTrait (const int32 CursorId, UScriptStruct *const TraitType, void *const OutTraitData, const bool bTraitDataInitialized=true) const
 Get a trait of a certain type on the current iteration. More...
 
EApparatusStatus GetTrait (UScriptStruct *const TraitType, void *const OutTraitData, const bool bTraitDataInitialized=true) const
 Get the trait on the current iteration. More...
 
template<typename T >
EApparatusStatus GetTrait (const int32 CursorId, T &OutTraitData, const bool bTraitDataInitialized=true) const
 Get a trait on the current iteration. More...
 
template<typename T >
EApparatusStatus GetTrait (T &OutTraitData, const bool bTraitDataInitialized=true) const
 Get the trait on the current iteration. More...
 
template<typename T >
T GetTrait (const int32 CursorId=DefaultCursorId) const
 Get a trait copy on the current iteration. More...
 
EApparatusStatus GetTraitHinted (const int32 CursorId, UScriptStruct *TraitType, const int32 TraitIndexHint, void *const OutTraitData, const bool bTraitDataInitialized=true) const
 Get the trait on the current iteration at a specified index hinted. More...
 
EApparatusStatus GetTraitHinted (UScriptStruct *TraitType, const int32 TraitIndexHint, void *const OutTraitData, const bool bTraitDataInitialized=true) const
 Get the trait on the current iteration at a specified index hinted. More...
 
template<typename T >
EApparatusStatus GetTraitHinted (const int32 CursorId, const int32 TraitIndexHint, T &OutTraitData, const bool bTraitDataInitialized=true) const
 Get the trait on the current iteration at a specified index hinted. More...
 
template<typename T >
EApparatusStatus GetTraitHinted (const int32 TraitIndexHint, T &OutTraitData, const bool bTraitDataInitialized=true) const
 Get the trait on the current iteration at a specified index hinted. More...
 
template<typename T >
T GetTraitHinted (const int32 CursorId, const int32 TraitIndexHint) const
 Get a copy of a trait on the current iteration at a specified index hinted. More...
 
template<typename T >
T GetTraitHinted (const int32 TraitIndexHint) const
 Get a copy of a trait on the current iteration at a specified index hinted. More...
 
Traits Data Access
template<EParadigm Paradigm = DefaultParadigm>
TResultTraitVoidPtr< Paradigm > GetTraitPtr (const int32 CursorId, UScriptStruct *const TraitType) const
 Get a pointer to a trait of a certain type on the current iteration. More...
 
template<typename T , EParadigm Paradigm = DefaultParadigm>
TResultTraitPtr< T, Paradigm > GetTraitPtr (const int32 CursorId=DefaultCursorId) const
 Get a pointer to a trait of a certain type on the current iteration. More...
 
template<typename T , EParadigm Paradigm = DefaultParadigm>
TResultTraitRef< T, Paradigm > GetTraitRef (const int32 CursorId=DefaultCursorId) const
 Get a trait reference on the current iteration. More...
 
template<EParadigm Paradigm = DefaultParadigm>
TResultTraitVoidPtr< Paradigm > GetTraitPtr (UScriptStruct *const TraitType) const
 Get a trait pointer of a specific type on the current iteration. More...
 
template<EParadigm Paradigm = DefaultParadigm>
TResultTraitVoidPtr< Paradigm > GetTraitPtrHinted (const int32 CursorId, UScriptStruct *const TraitType, const int32 TraitIndexHint) const
 Get a pointer to the trait on the current iteration at a specified index hinted. More...
 
template<EParadigm Paradigm = DefaultParadigm>
TResultTraitVoidPtr< Paradigm > GetTraitPtrHinted (UScriptStruct *const TraitType, const int32 TraitIndexHint) const
 Get a pointer to the trait on the current iteration at a specified index hinted. More...
 
template<typename T , EParadigm Paradigm = DefaultParadigm>
TResultTraitPtr< T, Paradigm > GetTraitPtrHinted (const int32 CursorId, const int32 TraitIndexHint) const
 Get a pointer to the trait on the current iteration at a specified index hinted. More...
 
template<typename T , EParadigm Paradigm = DefaultParadigm>
TResultTraitPtr< T, Paradigm > GetTraitPtrHinted (const int32 TraitIndexHint) const
 Get a pointer to the trait on the current iteration at a specified index hinted. More...
 
template<typename T , EParadigm Paradigm = DefaultParadigm>
TResultTraitRef< T, Paradigm > GetTraitRefHinted (const int32 CursorId, const int32 TraitIndexHint) const
 Get a reference for the trait on the current iteration at a specified index hinted. More...
 
template<typename T , EParadigm Paradigm = DefaultParadigm>
TResultTraitRef< T, Paradigm > GetTraitRefHinted (const int32 TraitIndexHint) const
 Get a reference for the trait on the current iteration at a specified index hinted. More...
 
Details Getting
TResultDetailPtr< UDetailGetDetail (const int32 CursorId, const TSubclassOf< UDetail > DetailClass) const
 Get a detail of a specific type on the current iteration. More...
 
TResultDetailPtr< UDetailGetDetail (const TSubclassOf< UDetail > DetailClass) const
 Get the detail on the current iteration of a certain class. More...
 
template<class D >
TResultDetailPtr< DGetDetail (const int32 CursorId=DefaultCursorId) const
 Get the detail on the current iteration of a certain class. More...
 
TResultDetailPtr< UDetailGetDetailHinted (const int32 CursorId, const TSubclassOf< UDetail > DetailClass, const int32 DetailIndexHint) const
 Get the detail on the current iteration at a certain index. More...
 
TResultDetailPtr< UDetailGetDetailHinted (const TSubclassOf< UDetail > DetailClass, const int32 DetailIndexHint) const
 Get the detail on the current iteration at a certain index. More...
 
template<class D >
TResultDetailPtr< DGetDetailHinted (const int32 CursorId, const int32 DetailIndexHint) const
 Get the detail on the current iteration at a certain index hinted. More...
 
template<class D >
TResultDetailPtr< DGetDetailHinted (const int32 DetailIndexHint) const
 Get the detail on the current iteration at a certain index hinted. More...
 
State Examination
bool HasViableEmbeddedCursors () const
 Check if there any any viable (active) embedded cursors within the chain. More...
 
int32 IterableNum () const
 Get the total number of iterable entities available. More...
 
Assignment
TChainoperator= (TChain &&InChain)
 Move a chain. More...
 
TChainoperator= (const TChain &InChain)
 Set a chain equal to another chain. More...
 
Initialization
 TChain (AMechanism *const InOwner)
 Initialize a chain with its owner. More...
 
 TChain (const TChain &InChain)
 Construct a new chain as a copy of another one. More...
 
- Public Member Functions inherited from FCommonChain
AMechanismGetOwner () const
 Get the owning mechanism of the chain. More...
 
const FFilterGetFilter () const
 Get the current filter used to enchain the iterables. More...
 
bool IsDisposed () const
 Check if the chain is disposed and is ready to be reused. More...
 
int32 UsersNum () const
 Get the current number of users of the chain. More...
 
void Retain () const
 Add a user of the chain preventing it from being disposed. More...
 
void Release () const
 Remove a user of the chain, possibly making it a subject for disposal. More...
 
EApparatusStatus Dispose ()
 Reset the state of the chain and mark as disposed (ready to be reused). More...
 
bool ShouldStopIterating () const
 Check if the chain should stop iterating. More...
 
EApparatusStatus StopIterating () const
 Stop the current iterating of the chain (if any). More...
 
virtual ~FCommonChain ()
 

Static Public Attributes

static constexpr bool IsSolid = ChunkItType::IsSolid
 Is the chain a solid-locking one? More...
 
static constexpr EParadigm DefaultParadigm = InDefaultParadigm
 The default access security paradigm. More...
 

Friends

class UApparatusFunctionLibrary
 
class AMechanism
 
class UMachine
 

Bulk-Copying

enum  EGatheringType { Clear , Collect }
 The type of gathering to use during the collection. More...
 
template<typename T , typename AllocatorT >
EApparatusStatus GetTraits (TArray< T, AllocatorT > &OutArray, const EGatheringType GatheringType=Clear) const
 Copy the traits of the enchained subjects to an array. More...
 

Additional Inherited Members

- Protected Member Functions inherited from FCommonChain
 FCommonChain (AMechanism *const InOwner)
 
void IncrementOperatingsCount () const
 
void DecrementOperatingsCount () const
 
- Protected Attributes inherited from FCommonChain
AMechanismOwner = nullptr
 The owner of the chain. More...
 
int32 Id = InvalidId
 A unique identifier of the chain. More...
 
std::atomic< int32 > UsersCount {0}
 The number of users currently needing the chain. More...
 
bool bDisposed = true
 Was this chain disposed and ready to be reused? More...
 
std::atomic< bool > bStopIterating {false}
 Was this chain stopped from iterating? More...
 
FFilter Filter
 A filter under which the iterables are locked within the chain. More...
 

Detailed Description

template<typename ChunkItT, typename BeltItT, EParadigm InDefaultParadigm>
struct TChain< ChunkItT, BeltItT, InDefaultParadigm >

A group of iterable locked together in a sequence.

Chains internally consist of segments and are iterated by the cursors.

Note
The chains are auto-disposed when there are no more active cursors iterating on them. Use explicit TChain::Retain() / TChain::Release() calls to manage the lifetime of the chain in a manual manner.
Template Parameters
ChunkItTThe type of the chunk iterator used.
BeltItTThe type of the belt iterator used.
InDefaultParadigmThe access security paradigm to use by default.

Member Typedef Documentation

◆ BeltItType

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
typedef BeltItT TChain< ChunkItT, BeltItT, InDefaultParadigm >::BeltItType

◆ ChunkItType

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
typedef ChunkItT TChain< ChunkItT, BeltItT, InDefaultParadigm >::ChunkItType

◆ FCursor

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
using TChain< ChunkItT, BeltItT, InDefaultParadigm >::FCursor = TCursor<>

Non-templated cursor version.

◆ IncompatibleSubjectHandleType

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
typedef std::conditional<std::templateis_same<SubjectHandleType,FSolidSubjectHandle>::value,FSubjectHandle,void>::type TChain< ChunkItT, BeltItT, InDefaultParadigm >::IncompatibleSubjectHandleType

A subject handle type, specifically incompatible with the current one used.

◆ SubjectHandleType

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
typedef ChunkItT::SubjectHandleType TChain< ChunkItT, BeltItT, InDefaultParadigm >::SubjectHandleType

The subject handle argument type.

◆ SubjectivePtrType

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
typedef ChunkItT::SubjectivePtrType TChain< ChunkItT, BeltItT, InDefaultParadigm >::SubjectivePtrType

The subjective argument type, including the possible 'const' specification.

Doesn't include the pointer part.

◆ Super

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
using TChain< ChunkItT, BeltItT, InDefaultParadigm >::Super = FCommonChain

◆ TResultDetailPtr

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<class D >
using TChain< ChunkItT, BeltItT, InDefaultParadigm >::TResultDetailPtr = typename ChunkItT::template TResultDetailPtr<D>

The class of a detail pointer returned by the methods.

Template Parameters
DThe class of the detail.

◆ TResultTraitPtr

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<typename T , EParadigm Paradigm>
using TChain< ChunkItT, BeltItT, InDefaultParadigm >::TResultTraitPtr = typename ChunkItT::template TResultTraitPtr<T, Paradigm>

The type of a trait pointer returned by the methods.

Template Parameters
TThe type of the trait.
ParadigmThe access safety paradigm.

◆ TResultTraitRef

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<typename T , EParadigm Paradigm>
using TChain< ChunkItT, BeltItT, InDefaultParadigm >::TResultTraitRef = typename ChunkItT::template TResultTraitRef<T, Paradigm>

The type of a trait reference returned by the methods.

Template Parameters
TThe type of the trait.
ParadigmThe access safety paradigm.

◆ TResultTraitVoidPtr

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<EParadigm Paradigm>
using TChain< ChunkItT, BeltItT, InDefaultParadigm >::TResultTraitVoidPtr = typename ChunkItT::template TResultTraitVoidPtr<Paradigm>

The type of a trait void pointer returned by the methods.

Template Parameters
ParadigmThe access safety paradigm.

Member Enumeration Documentation

◆ anonymous enum

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
anonymous enum
Enumerator
AllowsChanges 

Are subjects of the chain mutable?

AllowsStructuralChanges 

Are structural changes (adding/removing components) allowed?

AllowsDirectTraitAccess 

Is direct access to the traits data allowed?

◆ EGatheringType

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
enum TChain::EGatheringType

The type of gathering to use during the collection.

Enumerator
Clear 

Clear the output buffer before collecting.

Collect 

Append to the existing elements of the outputting buffer.

Constructor & Destructor Documentation

◆ TChain() [1/2]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
TChain< ChunkItT, BeltItT, InDefaultParadigm >::TChain ( AMechanism *const  InOwner)
inline

Initialize a chain with its owner.

◆ TChain() [2/2]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
TChain< ChunkItT, BeltItT, InDefaultParadigm >::TChain ( const TChain< ChunkItT, BeltItT, InDefaultParadigm > &  InChain)
inline

Construct a new chain as a copy of another one.

Note
The embedded cursors won't get copied.
Parameters
InChainA chain to copy.

Member Function Documentation

◆ Advance()

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
bool TChain< ChunkItT, BeltItT, InDefaultParadigm >::Advance ( const int32  CursorId = DefaultCursorId) const
inline

Advance iterating the chain to the next iteration using the embedded cursor.

Parameters
CursorIdThe identifier of an already iterating cursor.
Returns
Was the advancement successful?

◆ Begin()

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
bool TChain< ChunkItT, BeltItT, InDefaultParadigm >::Begin ( const int32  CursorId = DefaultCursorId,
const int32  Offset = 0,
const int32  Limit = TNumericLimits<int32>::Max() 
) const
inline

Begin iterating the chain using an embedded cursor.

Parameters
CursorIdThe identifier of the cursor to use. Will be obtained anew if doesn't exist.
OffsetThe slot offset to begin iterating with.
LimitThe maximum number of slots to iterate by.
Returns
Are there any actual slots to be iterated?

◆ BeginOrAdvance()

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
bool TChain< ChunkItT, BeltItT, InDefaultParadigm >::BeginOrAdvance ( const int32  CursorId = DefaultCursorId,
const int32  Offset = 0,
const int32  Limit = TNumericLimits<int32>::Max() 
) const
inline

Begin or advance iterating the chain.

Parameters
CursorIdThe identifier of the cursor. Created anew if needed.
OffsetThe slot offset to begin iterating with.
LimitThe maximum number of slots to iterate by.
Returns
Is the iteration possible? Returns false if the iteration should be ended.

◆ Enchain()

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<typename FilterT , typename IterableT , typename AllocatorT >
std::enable_if< std::is_base_of< FFilterIndicator, FilterT >::value, EApparatusStatus >::type TChain< ChunkItT, BeltItT, InDefaultParadigm >::Enchain ( const FilterT &  InFilter,
const TArray< IterableT *, AllocatorT > &  InIterables 
)
inline

Set to chain a set of iterables with a filter.

Template Parameters
FilterTThe type of filter used. Forwarded.
IterableTThe type of iterables to enchain.
AllocatorTThe type of iterables array allocator.
Parameters
InFilterThe target filter to enchain with.
InIterablesThe iterables to enchain.
Returns
The status of the operation.

◆ FindSegment()

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
int32 TChain< ChunkItT, BeltItT, InDefaultParadigm >::FindSegment ( const int32  InSlotIndex,
int32 &  OutLocalIndex,
const int32  SegmentOffset = 0 
) const
inline

Find a certain chain segment by a chain's slot index.

No iterating is done here, so no iterating-time checks (flagmark matching) is performed here.

Parameters
InSlotIndexThe index of the slot to find.
OutLocalIndexThe local index of the slot within the chain.
SegmentOffsetThe starting segment offset.
Returns
The index of the segment.

◆ GetDetail() [1/3]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
TResultDetailPtr< UDetail > TChain< ChunkItT, BeltItT, InDefaultParadigm >::GetDetail ( const int32  CursorId,
const TSubclassOf< UDetail DetailClass 
) const
inline

Get a detail of a specific type on the current iteration.

◆ GetDetail() [2/3]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<class D >
TResultDetailPtr< D > TChain< ChunkItT, BeltItT, InDefaultParadigm >::GetDetail ( const int32  CursorId = DefaultCursorId) const
inline

Get the detail on the current iteration of a certain class.

Templated version.

Template Parameters
DThe class of the detail to get.
Returns
The detail of the current iteration at a certain class.

◆ GetDetail() [3/3]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
TResultDetailPtr< UDetail > TChain< ChunkItT, BeltItT, InDefaultParadigm >::GetDetail ( const TSubclassOf< UDetail DetailClass) const
inline

Get the detail on the current iteration of a certain class.

Returns
The detail of the current iteration at a certain class.

◆ GetDetailHinted() [1/4]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<class D >
TResultDetailPtr< D > TChain< ChunkItT, BeltItT, InDefaultParadigm >::GetDetailHinted ( const int32  CursorId,
const int32  DetailIndexHint 
) const
inline

Get the detail on the current iteration at a certain index hinted.

Templated version.

Template Parameters
DThe class of the detail to get.
Parameters
CursorIdThe identifier of the cursor.
DetailIndexHintThe index of the detail hinting.
Returns
The detail of the current iteration at a certain index.

◆ GetDetailHinted() [2/4]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
TResultDetailPtr< UDetail > TChain< ChunkItT, BeltItT, InDefaultParadigm >::GetDetailHinted ( const int32  CursorId,
const TSubclassOf< UDetail DetailClass,
const int32  DetailIndexHint 
) const
inline

Get the detail on the current iteration at a certain index.

Parameters
CursorIdThe identifier of the cursor to examine.
DetailClassThe class of the detail to get.
DetailIndexHintThe hinting index of the detail.
Returns
The detail of the current iteration at a certain index.

◆ GetDetailHinted() [3/4]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<class D >
TResultDetailPtr< D > TChain< ChunkItT, BeltItT, InDefaultParadigm >::GetDetailHinted ( const int32  DetailIndexHint) const
inline

Get the detail on the current iteration at a certain index hinted.

Templated version.

Template Parameters
TThe class of the detail to get.
Parameters
DetailIndexHintThe index of the detail hinting.
Returns
The detail of the current iteration at a certain index.

◆ GetDetailHinted() [4/4]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
TResultDetailPtr< UDetail > TChain< ChunkItT, BeltItT, InDefaultParadigm >::GetDetailHinted ( const TSubclassOf< UDetail DetailClass,
const int32  DetailIndexHint 
) const
inline

Get the detail on the current iteration at a certain index.

Parameters
DetailClassThe class of the detail to get.
DetailIndexHintThe index of the detail hinting.
Returns
The detail of the current iteration at a certain index.

◆ GetId()

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
int32 TChain< ChunkItT, BeltItT, InDefaultParadigm >::GetId ( ) const
inline

A unique identifier of an embedded chain.

◆ GetSubject()

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
SubjectHandleType TChain< ChunkItT, BeltItT, InDefaultParadigm >::GetSubject ( const int32  CursorId = DefaultCursorId) const
inline

Get the subject of the current iteration.

Returns
The subject of the current iteration.

◆ GetSubjective()

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
SubjectivePtrType TChain< ChunkItT, BeltItT, InDefaultParadigm >::GetSubjective ( const int32  CursorId = DefaultCursorId) const
inline

Get the subjective of the current iteration (if any).

Returns
The subjective of the current iteration or nullptr, if there is none.

◆ GetTrait() [1/5]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<typename T >
EApparatusStatus TChain< ChunkItT, BeltItT, InDefaultParadigm >::GetTrait ( const int32  CursorId,
T OutTraitData,
const bool  bTraitDataInitialized = true 
) const
inline

Get a trait on the current iteration.

Templated version.

Template Parameters
TThe type of the trait to get.
Parameters
CursorIdThe identifier of the cursor to get from.
OutTraitDataThe output trait data buffer. The size of the buffer must be enough to store the whole trait.
bTraitDataInitializedWas trait data initialized prior to calling this function?
Returns
The status of the operation.

◆ GetTrait() [2/5]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
EApparatusStatus TChain< ChunkItT, BeltItT, InDefaultParadigm >::GetTrait ( const int32  CursorId,
UScriptStruct *const  TraitType,
void *const  OutTraitData,
const bool  bTraitDataInitialized = true 
) const
inline

Get a trait of a certain type on the current iteration.

Parameters
CursorIdThe identifier of the cursor to get from.
TraitTypeThe type of the trait.
OutTraitDataThe output trait data.
bTraitDataInitializedWas trait data initialized prior to calling this function?
Returns
The status of the operation.

◆ GetTrait() [3/5]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<typename T >
T TChain< ChunkItT, BeltItT, InDefaultParadigm >::GetTrait ( const int32  CursorId = DefaultCursorId) const
inline

Get a trait copy on the current iteration.

Templated version.

Template Parameters
TThe type of the trait to get.
Parameters
CursorIdThe identifier of the cursor to examine.
Returns
The copy of the trait.

◆ GetTrait() [4/5]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<typename T >
EApparatusStatus TChain< ChunkItT, BeltItT, InDefaultParadigm >::GetTrait ( T OutTraitData,
const bool  bTraitDataInitialized = true 
) const
inline

Get the trait on the current iteration.

Templated version.

Template Parameters
TThe type of the trait.
Parameters
OutTraitDataThe output trait data.
bTraitDataInitializedWas trait data initialized prior to calling this function?
Returns
The status of the operation.

◆ GetTrait() [5/5]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
EApparatusStatus TChain< ChunkItT, BeltItT, InDefaultParadigm >::GetTrait ( UScriptStruct *const  TraitType,
void *const  OutTraitData,
const bool  bTraitDataInitialized = true 
) const
inline

Get the trait on the current iteration.

Parameters
TraitTypeThe type of the trait to get.
OutTraitDataThe output trait data buffer. The size of the buffer must be enough to store the whole trait.
bTraitDataInitializedWas trait data initialized prior to calling this function?
Returns
The status of the operation.

◆ GetTraitHinted() [1/6]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<typename T >
T TChain< ChunkItT, BeltItT, InDefaultParadigm >::GetTraitHinted ( const int32  CursorId,
const int32  TraitIndexHint 
) const
inline

Get a copy of a trait on the current iteration at a specified index hinted.

Templated version.

Template Parameters
TThe type of the trait.
Parameters
CursorIdThe identifier of the embedded cursor.
TraitIndexHintThe hinting index of the trait.
Returns
A copy of the trait.

◆ GetTraitHinted() [2/6]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<typename T >
EApparatusStatus TChain< ChunkItT, BeltItT, InDefaultParadigm >::GetTraitHinted ( const int32  CursorId,
const int32  TraitIndexHint,
T OutTraitData,
const bool  bTraitDataInitialized = true 
) const
inline

Get the trait on the current iteration at a specified index hinted.

Templated version.

Template Parameters
TThe type of the trait to get.
Parameters
CursorIdThe identifier of the cursor to get from.
TraitIndexHintThe index of the trait hinting.
OutTraitDataThe output trait data.
bTraitDataInitializedWas trait data initialized prior to calling this function?
Returns
The status of the operation.

◆ GetTraitHinted() [3/6]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
EApparatusStatus TChain< ChunkItT, BeltItT, InDefaultParadigm >::GetTraitHinted ( const int32  CursorId,
UScriptStruct *  TraitType,
const int32  TraitIndexHint,
void *const  OutTraitData,
const bool  bTraitDataInitialized = true 
) const
inline

Get the trait on the current iteration at a specified index hinted.

Parameters
CursorIdThe identifier of the cursor to get from.
TraitIndexHintThe index of the trait.
TraitTypeThe type of the trait.
OutTraitDataThe output trait data.
bTraitDataInitializedWas trait data initialized prior to calling this function?
Returns
The status of the operation.

◆ GetTraitHinted() [4/6]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<typename T >
T TChain< ChunkItT, BeltItT, InDefaultParadigm >::GetTraitHinted ( const int32  TraitIndexHint) const
inline

Get a copy of a trait on the current iteration at a specified index hinted.

Templated version.

Template Parameters
TThe type of the trait.
Parameters
TraitIndexHintThe index of the trait hint.
Returns
A copy of the trait.

◆ GetTraitHinted() [5/6]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<typename T >
EApparatusStatus TChain< ChunkItT, BeltItT, InDefaultParadigm >::GetTraitHinted ( const int32  TraitIndexHint,
T OutTraitData,
const bool  bTraitDataInitialized = true 
) const
inline

Get the trait on the current iteration at a specified index hinted.

Templated version.

Template Parameters
TThe type of the trait.
Parameters
TraitIndexHintThe index of the trait hint.
OutTraitDataThe output trait data.
bTraitDataInitializedWas trait data initialized prior to calling this function?
Returns
The status of the operation.

◆ GetTraitHinted() [6/6]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
EApparatusStatus TChain< ChunkItT, BeltItT, InDefaultParadigm >::GetTraitHinted ( UScriptStruct *  TraitType,
const int32  TraitIndexHint,
void *const  OutTraitData,
const bool  bTraitDataInitialized = true 
) const
inline

Get the trait on the current iteration at a specified index hinted.

Parameters
TraitTypeThe type of the trait to get.
TraitIndexHintThe index of the trait hinting.
OutTraitDataThe output trait data.
bTraitDataInitializedWas trait data initialized prior to calling this function?
Returns
The status of the operation.

◆ GetTraitPtr() [1/3]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<EParadigm Paradigm = DefaultParadigm>
TResultTraitVoidPtr< Paradigm > TChain< ChunkItT, BeltItT, InDefaultParadigm >::GetTraitPtr ( const int32  CursorId,
UScriptStruct *const  TraitType 
) const
inline

Get a pointer to a trait of a certain type on the current iteration.

Template Parameters
ParadigmThe security paradigm override to use.
Parameters
CursorIdThe identifier of the cursor to get from.
TraitTypeThe type of the trait to get.
Returns
The resulting trait data.

◆ GetTraitPtr() [2/3]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<typename T , EParadigm Paradigm = DefaultParadigm>
TResultTraitPtr< T, Paradigm > TChain< ChunkItT, BeltItT, InDefaultParadigm >::GetTraitPtr ( const int32  CursorId = DefaultCursorId) const
inline

Get a pointer to a trait of a certain type on the current iteration.

Templated version.

Template Parameters
TThe type of the trait to get.
ParadigmThe security paradigm override to use.
Parameters
CursorIdThe identifier of the cursor to get from.
Returns
The resulting trait data.

◆ GetTraitPtr() [3/3]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<EParadigm Paradigm = DefaultParadigm>
TResultTraitVoidPtr< Paradigm > TChain< ChunkItT, BeltItT, InDefaultParadigm >::GetTraitPtr ( UScriptStruct *const  TraitType) const
inline

Get a trait pointer of a specific type on the current iteration.

Template Parameters
ParadigmThe security paradigm override to use.
Parameters
TraitTypeThe type of the trait to get.
Returns
The resulting trait data.

◆ GetTraitPtrHinted() [1/4]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<typename T , EParadigm Paradigm = DefaultParadigm>
TResultTraitPtr< T, Paradigm > TChain< ChunkItT, BeltItT, InDefaultParadigm >::GetTraitPtrHinted ( const int32  CursorId,
const int32  TraitIndexHint 
) const
inline

Get a pointer to the trait on the current iteration at a specified index hinted.

Templated version.

Template Parameters
TThe type of the trait to get.
ParadigmThe security paradigm override.
Parameters
CursorIdThe identifier of the cursor to get from.
TraitIndexHintThe index of the trait hinting.
Returns
A pointer to the trait of the designated type.

◆ GetTraitPtrHinted() [2/4]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<EParadigm Paradigm = DefaultParadigm>
TResultTraitVoidPtr< Paradigm > TChain< ChunkItT, BeltItT, InDefaultParadigm >::GetTraitPtrHinted ( const int32  CursorId,
UScriptStruct *const  TraitType,
const int32  TraitIndexHint 
) const
inline

Get a pointer to the trait on the current iteration at a specified index hinted.

Template Parameters
ParadigmThe security paradigm override.
Parameters
CursorIdThe identifier of the cursor to get from.
TraitTypeThe type of the trait to get.
TraitIndexHintThe index of the trait hinting.
Returns
A pointer to the trait of the designated type.

◆ GetTraitPtrHinted() [3/4]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<typename T , EParadigm Paradigm = DefaultParadigm>
TResultTraitPtr< T, Paradigm > TChain< ChunkItT, BeltItT, InDefaultParadigm >::GetTraitPtrHinted ( const int32  TraitIndexHint) const
inline

Get a pointer to the trait on the current iteration at a specified index hinted.

Templated version.

Template Parameters
TThe type of the trait to get.
ParadigmThe security paradigm override.
Parameters
TraitIndexHintThe index of the trait hinting.
Returns
A pointer to the trait of the designated type.

◆ GetTraitPtrHinted() [4/4]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<EParadigm Paradigm = DefaultParadigm>
TResultTraitVoidPtr< Paradigm > TChain< ChunkItT, BeltItT, InDefaultParadigm >::GetTraitPtrHinted ( UScriptStruct *const  TraitType,
const int32  TraitIndexHint 
) const
inline

Get a pointer to the trait on the current iteration at a specified index hinted.

Template Parameters
ParadigmThe security paradigm override.
Parameters
TraitTypeThe type of the trait to get.
TraitIndexHintThe index of the trait hinting.
Returns
A pointer to the trait of the designated type.

◆ GetTraitRef()

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<typename T , EParadigm Paradigm = DefaultParadigm>
TResultTraitRef< T, Paradigm > TChain< ChunkItT, BeltItT, InDefaultParadigm >::GetTraitRef ( const int32  CursorId = DefaultCursorId) const
inline

Get a trait reference on the current iteration.

Template Parameters
TThe type of the trait to get.
ParadigmThe security paradigm override to use.
Parameters
CursorIdThe identifier of the cursor to get from.
Returns
The resulting trait data.

◆ GetTraitRefHinted() [1/2]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<typename T , EParadigm Paradigm = DefaultParadigm>
TResultTraitRef< T, Paradigm > TChain< ChunkItT, BeltItT, InDefaultParadigm >::GetTraitRefHinted ( const int32  CursorId,
const int32  TraitIndexHint 
) const
inline

Get a reference for the trait on the current iteration at a specified index hinted.

Templated version.

Template Parameters
TThe type of the trait to get.
ParadigmThe security paradigm override.
Parameters
CursorIdThe identifier of the cursor to get from.
TraitIndexHintThe index of the trait hinting.
Returns
The trait reference.

◆ GetTraitRefHinted() [2/2]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<typename T , EParadigm Paradigm = DefaultParadigm>
TResultTraitRef< T, Paradigm > TChain< ChunkItT, BeltItT, InDefaultParadigm >::GetTraitRefHinted ( const int32  TraitIndexHint) const
inline

Get a reference for the trait on the current iteration at a specified index hinted.

Templated version.

Template Parameters
TThe type of the trait to get.
ParadigmThe security paradigm override.
Parameters
TraitIndexHintThe index of the trait hinting.
Returns
The trait reference.

◆ GetTraits()

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<typename T , typename AllocatorT >
EApparatusStatus TChain< ChunkItT, BeltItT, InDefaultParadigm >::GetTraits ( TArray< T, AllocatorT > &  OutArray,
const EGatheringType  GatheringType = Clear 
) const

Copy the traits of the enchained subjects to an array.

Template Parameters
TThe type of traits to copy. Must match the current filtering used.
AllocatorTThe allocator used within the array.
Parameters
[out]OutArrayThe array to output the traits to.
[in]GatheringTypeThe type of gathering to use.
Returns
The status of the operation.

◆ HasViableEmbeddedCursors()

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
bool TChain< ChunkItT, BeltItT, InDefaultParadigm >::HasViableEmbeddedCursors ( ) const
inline

Check if there any any viable (active) embedded cursors within the chain.

Returns
The state of examination.

◆ IterableNum()

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
int32 TChain< ChunkItT, BeltItT, InDefaultParadigm >::IterableNum ( ) const
inline

Get the total number of iterable entities available.

within the chain.

This would actually include the subjects that could be filtered out due to iterating-time checks (i.e. flagmarks).

◆ Iterate()

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<typename ... Ps>
TCursor< Ps... > TChain< ChunkItT, BeltItT, InDefaultParadigm >::Iterate ( const int32  Offset = 0,
const int32  Limit = TNumericLimits<int32>::Max() 
) const
inline

Prepare the chain for iterating returning the cursor.

Template Parameters
PsThe types of components to provide efficiently using the hinting mechanism.
Parameters
OffsetThe slot offset to begin iterating with.
LimitThe maximum number of slots to iterate by.
Returns
The cursor used for iterating.

◆ Operate() [1/4]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<typename FunctorT >
EApparatusStatus TChain< ChunkItT, BeltItT, InDefaultParadigm >::Operate ( ) const
inline

Process the chain using a functor mechanic.

Template Parameters
FunctorTThe type of the mechanical functor to operate on the chain slots.
TsThe type of components to provide to theTComponentTypesPack mechanic.
Returns
The status of the operation.

◆ Operate() [2/4]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<typename MechanicT >
EApparatusStatus TChain< ChunkItT, BeltItT, InDefaultParadigm >::Operate ( const MechanicT &  InMechanic) const
inline

Process the chain using a functor mechanic.

Supports lambdas. Constant mechanic version.

Template Parameters
MechanicTThe type of the functor to operate on the enchained slots. Can be a lambda expression.
Parameters
InMechanicThe functor mechanic to operate with. Can be a lambda expression.
Returns
The status of the operation.

◆ Operate() [3/4]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<typename FunctionT >
std::enable_if< std::is_function< FunctionT >::value, EApparatusStatus >::type TChain< ChunkItT, BeltItT, InDefaultParadigm >::Operate ( FunctionT *const  InMechanic) const
inline

Process the chain using a free function.

Template Parameters
FunctionTThe type of the function to operate on the enchained slots.
Returns
The status of the operation.

◆ Operate() [4/4]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<typename MechanicT >
EApparatusStatus TChain< ChunkItT, BeltItT, InDefaultParadigm >::Operate ( MechanicT &  InMechanic) const
inline

Process the chain using a functor mechanic.

Supports lambdas. Mutable mechanic version.

Template Parameters
MechanicTThe type of the functor to operate on the enchained slots. Can be a lambda expression.
Returns
The status of the operation.

◆ OperateConcurrently() [1/4]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<EParadigm Paradigm = DefaultParadigm, typename FunctorT = void>
std::enable_if<(IsSolid||(Paradigm<=EParadigm::Unsafe))&&!std::is_void< FunctorT >::value, EApparatusStatus >::type TChain< ChunkItT, BeltItT, InDefaultParadigm >::OperateConcurrently ( const FunctorT &  InMechanic,
const int32  ThreadsCountMax,
const int32  SlotsPerThreadMin = 1,
const bool  bSync = true 
) const
inline

Process the chain using a functor mechanic in a parallel manner.

Supports lambdas. Constant mechanic version.

Note
Only solid chains can be safely operated concurrently.
Template Parameters
ParadigmThe security paradigm to utilize.
FunctorTThe type of the mechanic functor to operate on the slots. May be a lambda.
Parameters
InMechanicThe mechanic functor to operate with. Can be a lambda.
ThreadsCountMaxThe maximum number of threads to process with.
SlotsPerThreadMinThe minimum number of slots per thread to process.
bSyncShould the operation be synced within the current branch.
Returns
The status of the operation.

◆ OperateConcurrently() [2/4]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<typename FunctorT , EParadigm Paradigm = DefaultParadigm>
std::enable_if<(IsSolid||(Paradigm<=EParadigm::Unsafe))&&!std::is_void< FunctorT >::value, EApparatusStatus >::type TChain< ChunkItT, BeltItT, InDefaultParadigm >::OperateConcurrently ( const int32  ThreadsCountMax,
const int32  SlotsPerThreadMin = 1,
const bool  bSync = true 
) const
inline

Process the chain using a functor mechanic in a parallel manner.

Template Parameters
ParadigmThe security paradigm to utilize.
FunctorTThe type of the mechanical functor to operate on the slots.
TsThe type of components to supply to the mechanic.
Parameters
ThreadsCountMaxThe maximum number of threads to process with.
SlotsPerThreadMinThe minimum number of slots per thread to process.
bSyncShould the operation be synced within the current branch.
Returns
The status of the operation.

◆ OperateConcurrently() [3/4]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<EParadigm Paradigm = DefaultParadigm, typename FunctionT = void>
std::enable_if<(IsSolid||(Paradigm<=EParadigm::Unsafe))&&std::is_function< FunctionT >::value, EApparatusStatus >::type TChain< ChunkItT, BeltItT, InDefaultParadigm >::OperateConcurrently ( FunctionT *const  InMechanic,
const int32  ThreadsCountMax,
const int32  SlotsPerThreadMin = 1,
const bool  bSync = true 
) const
inline

Process the chain using a function mechanic in a parallel manner.

Note
Only solid chains can be safely operated concurrently.
Template Parameters
ParadigmThe security paradigm to utilize.
FunctionTThe type of the mechanic functor to operate on the slots.
Parameters
InMechanicThe mechanical function to operate with.
ThreadsCountMaxThe maximum number of threads to process with.
SlotsPerThreadMinThe minimum number of slots per thread to process.
bSyncShould the operation be synced within the current branch.
Returns
The status of the operation.

◆ OperateConcurrently() [4/4]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<EParadigm Paradigm = DefaultParadigm, typename FunctorT = void>
std::enable_if<(IsSolid||(Paradigm<=EParadigm::Unsafe))&&!std::is_void< FunctorT >::value, EApparatusStatus >::type TChain< ChunkItT, BeltItT, InDefaultParadigm >::OperateConcurrently ( FunctorT &  InMechanic,
const int32  ThreadsCountMax,
const int32  SlotsPerThreadMin = 1,
const bool  bSync = true 
) const
inline

Process the chain using a functor mechanic in a parallel manner.

Supports lambdas.

Note
Only solid chains can be safely operated concurrently.
Template Parameters
ParadigmThe security paradigm to utilize.
FunctorTThe type of the mechanic functor to operate on the slots. May be a lambda.
Parameters
InMechanicThe mechanic functor to operate with. Can be a lambda.
ThreadsCountMaxThe maximum number of threads to process with.
SlotsPerThreadMinThe minimum number of slots per thread to process.
bSyncShould the operation be synced within the current branch.
Returns
The status of the operation.

◆ operator=() [1/2]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
TChain & TChain< ChunkItT, BeltItT, InDefaultParadigm >::operator= ( const TChain< ChunkItT, BeltItT, InDefaultParadigm > &  InChain)
inline

Set a chain equal to another chain.

Note
The embedded cursors won't get copied.
Returns
Returns a reference for itself.

◆ operator=() [2/2]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
TChain & TChain< ChunkItT, BeltItT, InDefaultParadigm >::operator= ( TChain< ChunkItT, BeltItT, InDefaultParadigm > &&  InChain)
inline

Move a chain.

◆ Reset()

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
EApparatusStatus TChain< ChunkItT, BeltItT, InDefaultParadigm >::Reset ( )
inlineoverridevirtual

Reset the chain.

All of the chain segments (iterables) get released as part of this operation.

The embedded cursors will get reset as well, but you have to release all of the manual users beforehand.

Returns
The status of the operation.

Reimplemented from FCommonChain.

Friends And Related Function Documentation

◆ AMechanism

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
friend class AMechanism
friend

◆ UApparatusFunctionLibrary

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
friend class UApparatusFunctionLibrary
friend

◆ UMachine

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
friend class UMachine
friend

Member Data Documentation

◆ DefaultParadigm

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
constexpr EParadigm TChain< ChunkItT, BeltItT, InDefaultParadigm >::DefaultParadigm = InDefaultParadigm
staticconstexpr

The default access security paradigm.

◆ IsSolid

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
constexpr bool TChain< ChunkItT, BeltItT, InDefaultParadigm >::IsSolid = ChunkItType::IsSolid
staticconstexpr

Is the chain a solid-locking one?


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