Apparatus Version 1.23
ECS data-oriented workflow for Unreal Engine.
Loading...
Searching...
No Matches
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

using Super = FCommonChain
 
typedef ChunkItT ChunkItType
 
typedef BeltItT BeltItType
 
typedef ChunkItT::SubjectHandleType SubjectHandleType
 The subject handle argument type.
 
typedef std::conditional< std::templateis_same< SubjectHandleType, FSolidSubjectHandle >::value, FSubjectHandle, void >::type IncompatibleSubjectHandleType
 A subject handle type, specifically incompatible with the current one used.
 
typedef ChunkItT::SubjectivePtrType SubjectivePtrType
 The subjective argument type, including the possible 'const' specification.
 
template<EParadigm Paradigm>
using TTraitVoidPtrResultSecurity = typename ChunkItT::template TTraitVoidPtrResultSecurity< Paradigm >
 Protect the type of a trait void pointer returned by the methods.
 
template<EParadigm Paradigm>
using TTraitVoidPtrResult = typename ChunkItT::template TTraitVoidPtrResult< Paradigm >
 The type of a trait void pointer returned by the methods.
 
template<EParadigm Paradigm, typename T >
using TTraitPtrResultSecurity = typename ChunkItT::template TTraitPtrResultSecurity< Paradigm, T >
 Protect the type of a trait pointer returned by the methods.
 
template<EParadigm Paradigm, typename T >
using TTraitPtrResult = typename ChunkItT::template TTraitPtrResult< Paradigm, T >
 The type of a trait pointer returned by the methods.
 
template<EParadigm Paradigm, typename T >
using TTraitRefResultSecurity = typename ChunkItT::template TTraitRefResultSecurity< Paradigm, T >
 Protect the type of a trait reference returned by the methods.
 
template<EParadigm Paradigm, typename T >
using TTraitRefResult = typename ChunkItT::template TTraitRefResult< Paradigm, T >
 The type of a trait reference returned by the methods.
 
template<class D >
using TDetailPtrResultSecurity = typename ChunkItT::template TDetailPtrResultSecurity< D >
 The class of a detail pointer returned by the methods.
 
template<class D >
using TDetailPtrResult = typename ChunkItT::template TDetailPtrResult< D >
 The class of a detail pointer returned by the methods.
 
using FCursor = TCursor<>
 Non-templated cursor version.
 
- 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.
 
EApparatusStatus Reset (bool bWaitForOperatings=true) override
 Reset the chain completely.
 
template<typename FilterT , typename IterableT , typename AllocatorT , EParadigm Paradigm = DefaultParadigm, TFilterTypeSecurity< std::decay_t< FilterT > > = true>
TOutcome< Paradigm > Enchain (FilterT &&InFilter, const TArray< IterableT *, AllocatorT > &InIterables)
 Set to chain a set of iterables with a filter.
 
int32 FindSegment (const int32 InSlotIndex, int32 &OutLocalIndex, const int32 SegmentOffset=0) const
 Find a certain chain segment by a chain's slot index.
 
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.
 
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.
 
bool Advance (const int32 CursorId=DefaultCursorId) const
 Advance iterating the chain to the next iteration using the embedded cursor.
 
bool BeginOrAdvance (const int32 CursorId=DefaultCursorId, const int32 Offset=0, const int32 Limit=TNumericLimits< int32 >::Max()) const
 Begin or advance iterating the chain.
 
Operating
template<EParadigm Paradigm = DefaultParadigm, typename MechanicT = void, typename std::enable_if<!std::is_function< MechanicT >::value, bool >::type = true>
auto Operate (const MechanicT &InMechanic) const
 Process the chain using a functor mechanic.
 
template<EParadigm Paradigm = DefaultParadigm, typename MechanicT = void, typename std::enable_if<!std::is_function< MechanicT >::value, bool >::type = true>
auto Operate (MechanicT &InMechanic) const
 Process the chain using a functor mechanic.
 
template<EParadigm Paradigm = DefaultParadigm, typename FunctionT = void, typename std::enable_if< std::is_function< FunctionT >::value, bool >::type = true>
auto Operate (FunctionT *const InMechanic) const
 Process the chain using a free function.
 
template<EParadigm Paradigm = DefaultParadigm, typename FunctorT = void, typename std::enable_if<(IsSolid||IsUnsafe(Paradigm)) &&!std::is_void< FunctorT >::value &&!std::is_function< std::decay_t< FunctorT > >::value, bool >::type = true>
auto 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.
 
template<EParadigm Paradigm = DefaultParadigm, typename FunctorT = void, typename std::enable_if<(IsSolid||IsUnsafe(Paradigm)) &&!std::is_void< FunctorT >::value &&!std::is_function< std::decay_t< FunctorT > >::value, bool >::type = true>
auto 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.
 
template<EParadigm Paradigm = DefaultParadigm, typename FunctionT = void, more::enable_if_t<(IsSolid||IsUnsafe(Paradigm)) &&std::is_function< FunctionT >::value, bool > = true>
auto 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.
 
template<typename FunctorT , EParadigm Paradigm = DefaultParadigm>
auto Operate () const
 Process the chain using a functor mechanic.
 
template<EParadigm Paradigm, typename FunctorT >
auto Operate () const
 Process the chain using a functor mechanic.
 
template<typename FunctorT , EParadigm Paradigm = DefaultParadigm, more::enable_if_t<(IsSolid||IsUnsafe(Paradigm)) &&!std::is_void< FunctorT >::value, bool > = true>
auto OperateConcurrently (const int32 ThreadsCountMax, const int32 SlotsPerThreadMin=1, const bool bSync=true) const
 Process the chain using a functor mechanic in a parallel manner.
 
template<EParadigm Paradigm, typename FunctorT , more::enable_if_t<(IsSolid||IsUnsafe(Paradigm)) &&!std::is_void< FunctorT >::value, bool > = true>
auto OperateConcurrently (const int32 ThreadsCountMax, const int32 SlotsPerThreadMin=1, const bool bSync=true) const
 Process the chain using a functor mechanic in a parallel manner.
 
Iteration State
SubjectHandleType GetSubject (const int32 CursorId=DefaultCursorId) const
 Get the subject of the current iteration.
 
SubjectivePtrType GetSubjective (const int32 CursorId=DefaultCursorId) const
 Get the subjective of the current iteration (if any).
 
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.
 
EApparatusStatus GetTrait (UScriptStruct *const TraitType, void *const OutTraitData, const bool bTraitDataInitialized=true) const
 Get the trait on the current iteration.
 
template<typename T >
EApparatusStatus GetTrait (const int32 CursorId, T &OutTraitData, const bool bTraitDataInitialized=true) const
 Get a trait on the current iteration.
 
template<typename T >
EApparatusStatus GetTrait (T &OutTraitData, const bool bTraitDataInitialized=true) const
 Get the trait on the current iteration.
 
template<typename T >
T GetTrait (const int32 CursorId=DefaultCursorId) const
 Get a trait copy on the current iteration.
 
template<EParadigm Paradigm = DefaultParadigm>
TOutcome< Paradigm > 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.
 
template<EParadigm Paradigm = DefaultParadigm>
TOutcome< Paradigm > 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.
 
template<EParadigm Paradigm, typename T >
TOutcome< Paradigm > 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.
 
template<typename T , EParadigm Paradigm = DefaultParadigm>
auto 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.
 
template<EParadigm Paradigm, typename T >
auto GetTraitHinted (const int32 TraitIndexHint, T &OutTraitData, const bool bTraitDataInitialized=true) const
 Get the trait on the current iteration at a specified index hinted.
 
template<typename T , EParadigm Paradigm = DefaultParadigm>
auto GetTraitHinted (const int32 TraitIndexHint, T &OutTraitData, const bool bTraitDataInitialized=true) const
 Get the trait on the current iteration at a specified index hinted.
 
template<EParadigm Paradigm, typename T >
TOutcome< Paradigm, TGetTraitHinted (const int32 CursorId, const int32 TraitIndexHint) const
 Get a copy of a trait on the current iteration at a specified index hinted.
 
template<typename T , EParadigm Paradigm = DefaultParadigm>
auto GetTraitHinted (const int32 CursorId, const int32 TraitIndexHint) const
 Get a copy of a trait on the current iteration at a specified index hinted.
 
template<EParadigm Paradigm, typename T >
TOutcome< Paradigm, TGetTraitHinted (const int32 TraitIndexHint) const
 Get a copy of a trait on the current iteration at a specified index hinted.
 
template<typename T , EParadigm Paradigm = DefaultParadigm>
TOutcome< Paradigm, TGetTraitHinted (const int32 TraitIndexHint) const
 Get a copy of a trait on the current iteration at a specified index hinted.
 
Traits Data Access
template<EParadigm Paradigm = DefaultParadigm>
TOutcome< Paradigm, TTraitVoidPtrResult< Paradigm > > GetTraitPtr (const int32 CursorId, UScriptStruct *const TraitType) const
 Get a pointer to a trait of a certain type on the current iteration.
 
template<EParadigm Paradigm, typename T , TTraitPtrResultSecurity< Paradigm, T > = 0>
TOutcome< Paradigm, TTraitPtrResult< Paradigm, T > > GetTraitPtr (const int32 CursorId=DefaultCursorId) const
 Get a pointer to a trait of a certain type on the current iteration.
 
template<typename T , EParadigm Paradigm = DefaultParadigm, TTraitPtrResultSecurity< Paradigm, T > = 0>
TOutcome< Paradigm, TTraitPtrResult< Paradigm, T > > GetTraitPtr (const int32 CursorId=DefaultCursorId) const
 Get a pointer to a trait of a certain type on the current iteration.
 
template<EParadigm Paradigm, typename T , TTraitRefResultSecurity< Paradigm, T > = 0>
TOutcome< Paradigm, TTraitRefResult< Paradigm, T > > GetTraitRef (const int32 CursorId=DefaultCursorId) const
 Get a trait reference on the current iteration.
 
template<typename T , EParadigm Paradigm = DefaultParadigm, TTraitRefResultSecurity< Paradigm, T > = 0>
TOutcome< Paradigm, TTraitRefResult< Paradigm, T > > GetTraitRef (const int32 CursorId=DefaultCursorId) const
 Get a trait reference on the current iteration.
 
template<EParadigm Paradigm = DefaultParadigm>
TTraitVoidPtrResult< Paradigm > GetTraitPtr (UScriptStruct *const TraitType) const
 Get a trait pointer of a specific type on the current iteration.
 
template<EParadigm Paradigm = DefaultParadigm>
TOutcome< Paradigm, TTraitVoidPtrResult< 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.
 
template<EParadigm Paradigm = DefaultParadigm>
TOutcome< Paradigm, TTraitVoidPtrResult< Paradigm > > GetTraitPtrHinted (UScriptStruct *const TraitType, const int32 TraitIndexHint) const
 Get a pointer to the trait on the current iteration at a specified index hinted.
 
template<EParadigm Paradigm, typename T >
TOutcome< Paradigm, TTraitPtrResult< Paradigm, T > > GetTraitPtrHinted (const int32 CursorId, const int32 TraitIndexHint) const
 Get a pointer to the trait on the current iteration at a specified index hinted.
 
template<typename T , EParadigm Paradigm = DefaultParadigm>
TOutcome< Paradigm, TTraitPtrResult< Paradigm, T > > GetTraitPtrHinted (const int32 CursorId, const int32 TraitIndexHint) const
 Get a pointer to the trait on the current iteration at a specified index hinted.
 
template<EParadigm Paradigm, typename T >
TOutcome< Paradigm, TTraitPtrResult< Paradigm, T > > GetTraitPtrHinted (const int32 TraitIndexHint) const
 Get a pointer to the trait on the current iteration at a specified index hinted.
 
template<typename T , EParadigm Paradigm = DefaultParadigm>
TOutcome< Paradigm, TTraitPtrResult< Paradigm, T > > GetTraitPtrHinted (const int32 TraitIndexHint) const
 Get a pointer to the trait on the current iteration at a specified index hinted.
 
template<EParadigm Paradigm, typename T , TTraitPtrResultSecurity< Paradigm, T > = 0>
TOutcome< Paradigm, TTraitRefResult< Paradigm, T > > GetTraitRefHinted (const int32 CursorId, const int32 TraitIndexHint) const
 Get a reference for the trait on the current iteration at a specified index hinted.
 
template<typename T , EParadigm Paradigm = DefaultParadigm, TTraitPtrResultSecurity< Paradigm, T > = 0>
TOutcome< Paradigm, TTraitRefResult< Paradigm, T > > GetTraitRefHinted (const int32 CursorId, const int32 TraitIndexHint) const
 Get a reference for the trait on the current iteration at a specified index hinted.
 
template<EParadigm Paradigm, typename T , TTraitPtrResultSecurity< Paradigm, T > = 0>
TOutcome< Paradigm, TTraitRefResult< Paradigm, T > > GetTraitRefHinted (const int32 TraitIndexHint) const
 Get a reference for the trait on the current iteration at a specified index hinted.
 
template<typename T , EParadigm Paradigm = DefaultParadigm, TTraitPtrResultSecurity< Paradigm, T > = 0>
TOutcome< Paradigm, TTraitRefResult< Paradigm, T > > GetTraitRefHinted (const int32 TraitIndexHint) const
 Get a reference for the trait on the current iteration at a specified index hinted.
 
Details Getting
template<EParadigm Paradigm = DefaultParadigm>
TOutcome< Paradigm, TDetailPtrResult< UDetail > > GetDetail (const int32 CursorId, const TSubclassOf< UDetail > DetailClass) const
 Get a detail of a specific type on the current iteration.
 
template<EParadigm Paradigm = DefaultParadigm, TDetailPtrResultSecurity< UDetail > = 0>
TOutcome< Paradigm, TDetailPtrResult< UDetail > > GetDetail (const TSubclassOf< UDetail > DetailClass) const
 Get the detail on the current iteration of a certain class.
 
template<EParadigm Paradigm, class D , TDetailPtrResultSecurity< D > = 0>
TOutcome< Paradigm, TDetailPtrResult< D > > GetDetail (const int32 CursorId=DefaultCursorId) const
 Get the detail on the current iteration of a certain class.
 
template<class D , EParadigm Paradigm = DefaultParadigm, TDetailPtrResultSecurity< D > = 0>
TOutcome< Paradigm, TDetailPtrResult< D > > GetDetail (const int32 CursorId=DefaultCursorId) const
 Get the detail on the current iteration of a certain class.
 
template<EParadigm Paradigm = DefaultParadigm, TDetailPtrResultSecurity< UDetail > = 0>
TOutcome< Paradigm, TDetailPtrResult< UDetail > > GetDetailHinted (const int32 CursorId, const TSubclassOf< UDetail > DetailClass, const int32 DetailIndexHint) const
 Get the detail on the current iteration at a certain index.
 
template<EParadigm Paradigm = DefaultParadigm, TDetailPtrResultSecurity< UDetail > = 0>
TOutcome< Paradigm, TDetailPtrResult< UDetail > > GetDetailHinted (const TSubclassOf< UDetail > DetailClass, const int32 DetailIndexHint) const
 Get the detail on the current iteration at a certain index.
 
template<EParadigm Paradigm, class D , TDetailPtrResultSecurity< D > = 0>
TOutcome< Paradigm, TDetailPtrResult< D > > GetDetailHinted (const int32 CursorId, const int32 DetailIndexHint) const
 Get the detail on the current iteration at a certain index hinted.
 
template<class D , EParadigm Paradigm = DefaultParadigm, TDetailPtrResultSecurity< D > = 0>
TOutcome< Paradigm, TDetailPtrResult< D > > GetDetailHinted (const int32 CursorId, const int32 DetailIndexHint) const
 Get the detail on the current iteration at a certain index hinted.
 
template<EParadigm Paradigm, class D , TDetailPtrResultSecurity< D > = 0>
TOutcome< Paradigm, TDetailPtrResult< D > > GetDetailHinted (const int32 DetailIndexHint) const
 Get the detail on the current iteration at a certain index hinted.
 
template<class D , EParadigm Paradigm = DefaultParadigm, TDetailPtrResultSecurity< D > = 0>
TOutcome< Paradigm, TDetailPtrResult< D > > GetDetailHinted (const int32 DetailIndexHint) const
 Get the detail on the current iteration at a certain index hinted.
 
template<EParadigm Paradigm = EParadigm::Default, TDetailPtrResultSecurity< UDetail > = 0>
TOutcome< Paradigm, TDetailPtrResult< UDetail > > DetailAtLine (const int32 CursorId, const int32 LineIndex) const
 Get the detail on the current iteration at a certain line index.
 
template<EParadigm Paradigm = EParadigm::Default, TDetailPtrResultSecurity< UDetail > = 0>
TOutcome< Paradigm, TDetailPtrResult< UDetail > > DetailAtLine (const int32 LineIndex) const
 Get the detail on the current iteration at a certain line index.
 
State Examination
bool HasViableEmbeddedCursors () const
 Check if there any any viable (active) embedded cursors within the chain.
 
int32 IterableNum () const
 Get the total number of iterable entities available.
 
Assignment
TChainoperator= (TChain &&InChain)
 Move a chain.
 
TChainoperator= (const TChain &InChain)
 Set a chain equal to another chain.
 
Initialization
 TChain (AMechanism *const InOwner)
 Initialize a chain with its owner.
 
 TChain (const TChain &InChain)
 Construct a new chain as a copy of another one.
 
virtual ~TChain ()
 Finalize the chain.
 
- Public Member Functions inherited from FCommonChain
AMechanismGetOwner () const
 Get the owning mechanism of the chain.
 
const FFilterGetFilter () const
 Get the current filter used to enchain the iterables.
 
bool IsDisposed () const
 Check if the chain is disposed and is ready to be reused.
 
int32 UsersNum () const
 Get the current number of users of the chain.
 
void Retain () const
 Add a user of the chain preventing it from being disposed.
 
void Release () const
 Remove a user of the chain.
 
virtual EApparatusStatus Reset (bool bWaitForOperatings=true)
 Reset the chain.
 
bool ShouldStopIterating () const
 Check if the chain should stop iterating.
 
EApparatusStatus StopIterating () const
 Stop the current iterating of the chain (if any).
 
auto OperatingsNum () const
 Get the number of current operatings happening within the chain.
 
void WaitForOperatingsCompletion () const
 Wait for all the current operatings to be completed.
 
bool WaitForOperatingsCompletion (const uint32 WaitTimeMsec, const bool bIgnoreThreadIdleStats=false) const
 Wait for all the current operatings to be completed.
 
bool WaitForOperatingsCompletion (const FTimespan &WaitTime, const bool bIgnoreThreadIdleStats=false) const
 Wait for all the current operatings to be completed.
 
virtual ~FCommonChain ()
 Finalize the chain.
 
FString ToString () const
 Convert the chain to a textual representation.
 

Static Public Attributes

static constexpr bool IsSolid = ChunkItType::IsSolid
 Is the chain a solid-locking one?
 
static constexpr bool AllowsChanges = ChunkItType::AllowsChanges
 Are subjects of the chain mutable?
 
static constexpr bool AllowsStructuralChanges = ChunkItType::AllowsStructuralChanges
 Are structural changes (adding/removing components) allowed?
 
static constexpr bool AllowsDirectTraitAccess = ChunkItType::AllowsDirectTraitAccess
 Is direct access to the traits data allowed?
 
static constexpr EParadigm DefaultParadigm = InDefaultParadigm
 The default access security paradigm.
 

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.
 

Additional Inherited Members

- Protected Types inherited from FCommonChain
using UsersCountValueType = uint8
 The type of the number of chain users value.
 
using OperatingsCountValueType = uint8
 The type of the value for the number of operatings within the chain.
 
using ConcurrencyLevelValueType = uint8
 The type of the concurrency value.
 
- Protected Member Functions inherited from FCommonChain
bool CanBeReused () const
 Check if a chain can be reused as a new chain.
 
void IncrementConcurrencyLevel () const
 
void DecrementConcurrencyLevel () const
 
void IncrementOperatingsCount () const
 
void DecrementOperatingsCount () const
 
EApparatusStatus Dispose (bool bWaitForOperatings=true)
 Reset the state of the chain and mark as disposed (ready to be reused).
 
 FCommonChain (AMechanism *const InOwner)
 Initialize a chain using its owning mechanism.
 
- Protected Attributes inherited from FCommonChain
AMechanismOwner = nullptr
 The owner of the chain.
 
int32 Id = InvalidId
 A unique identifier of the chain.
 
std::atomic< UsersCountValueTypeUsersCount {0}
 The number of users currently needing the chain.
 
std::atomic< boolbDisposed {true}
 Was this chain disposed and ready to be reused?
 
std::atomic< boolbDisposing {false}
 Is the chain currently being disposed?
 
std::atomic< boolbStopIterating {false}
 Was this chain stopped from further iterating?
 
FFilter Filter
 A filter under which the iterables are locked within the chain.
 
bool bSelfDestroyOnDisposal = false
 Should delete itself on disposal.
 
bool bInDestructor = false
 Are we currently in a destructor?
 
std::atomic< OperatingsCountValueTypeOperatingsCount {0}
 The number of current operatings on the chain.
 
std::atomic< ConcurrencyLevelValueTypeConcurrencyLevel {0}
 The current concurrency level of the chain.
 
FEventRef OperatingsCompleted {EEventMode::ManualReset}
 The event is fired once all of the operatings are completed.
 
TArray< TUniquePtr< FCommonRunnableMechanic > > BackgroundRunnableMechanics
 The list of enqueued runnable mechanics.
 
FCriticalSection BackgroundRunnableMechanicsCS
 A critical section for the TChain::BackgroundRunnableMechanics access.
 

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

◆ TDetailPtrResult

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

The class of a detail pointer returned by the methods.

Template Parameters
DThe class of the detail.

◆ TDetailPtrResultSecurity

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

The class of a detail pointer returned by the methods.

Template Parameters
DThe class of the detail.

◆ TTraitPtrResult

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

The type of a trait pointer returned by the methods.

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

◆ TTraitPtrResultSecurity

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

Protect the type of a trait pointer returned by the methods.

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

◆ TTraitRefResult

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

The type of a trait reference returned by the methods.

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

◆ TTraitRefResultSecurity

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

Protect the type of a trait reference returned by the methods.

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

◆ TTraitVoidPtrResult

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

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

Template Parameters
ParadigmThe access safety paradigm.

◆ TTraitVoidPtrResultSecurity

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

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

Template Parameters
ParadigmThe access safety paradigm.

Member Enumeration Documentation

◆ 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.

◆ ~TChain()

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
virtual TChain< ChunkItT, BeltItT, InDefaultParadigm >::~TChain ( )
inlinevirtual

Finalize the chain.

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.

◆ DetailAtLine() [1/2]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<EParadigm Paradigm = EParadigm::Default, TDetailPtrResultSecurity< UDetail > = 0>
TOutcome< Paradigm, TDetailPtrResult< UDetail > > TChain< ChunkItT, BeltItT, InDefaultParadigm >::DetailAtLine ( const int32  CursorId,
const int32  LineIndex 
) const
inline

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

Template Parameters
ParadigmThe paradigm to work under.
Parameters
CursorIdThe embedded cursor identifier.
LineIndexThe index of the detail line.
Returns
The detail of the current iteration at a certain index.

◆ DetailAtLine() [2/2]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<EParadigm Paradigm = EParadigm::Default, TDetailPtrResultSecurity< UDetail > = 0>
TOutcome< Paradigm, TDetailPtrResult< UDetail > > TChain< ChunkItT, BeltItT, InDefaultParadigm >::DetailAtLine ( const int32  LineIndex) const
inline

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

Template Parameters
ParadigmThe paradigm to work under..
Parameters
LineIndexThe index of the detail line.
Returns
The detail of the current iteration at a certain index.

◆ Enchain()

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<typename FilterT , typename IterableT , typename AllocatorT , EParadigm Paradigm = DefaultParadigm, TFilterTypeSecurity< std::decay_t< FilterT > > = true>
TOutcome< Paradigm > TChain< ChunkItT, BeltItT, InDefaultParadigm >::Enchain ( 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
[in]InFilterThe target filter to enchain with.
[in]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/4]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<EParadigm Paradigm = DefaultParadigm>
TOutcome< Paradigm, TDetailPtrResult< 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.

Template Parameters
ParadigmThe paradigm to work under.
Parameters
CursorIdThe identifier of the embedded cursor.
DetailClassThe class of the detail to get.
Returns
The outcome of the operation.

◆ GetDetail() [2/4]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<EParadigm Paradigm, class D , TDetailPtrResultSecurity< D > = 0>
TOutcome< Paradigm, TDetailPtrResult< 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
ParadigmThe paradigm to work under.
DThe class of the detail to get.
Returns
The detail of the current iteration at a certain class.

◆ GetDetail() [3/4]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<class D , EParadigm Paradigm = DefaultParadigm, TDetailPtrResultSecurity< D > = 0>
TOutcome< Paradigm, TDetailPtrResult< 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.
ParadigmThe paradigm to work under.
Parameters
CursorIdThe identifier of the embedded cursor.
Returns
The detail of the current iteration of a certain class.

◆ GetDetail() [4/4]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<EParadigm Paradigm = DefaultParadigm, TDetailPtrResultSecurity< UDetail > = 0>
TOutcome< Paradigm, TDetailPtrResult< UDetail > > TChain< ChunkItT, BeltItT, InDefaultParadigm >::GetDetail ( const TSubclassOf< UDetail DetailClass) const
inline

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

Template Parameters
ParadigmThe paradigm to work under.
Parameters
DetailClassThe class of the detail to get.
Returns
The detail of the current iteration at a certain class.

◆ GetDetailHinted() [1/6]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<EParadigm Paradigm, class D , TDetailPtrResultSecurity< D > = 0>
TOutcome< Paradigm, TDetailPtrResult< 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
ParadigmThe paradigm to work under.
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/6]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<class D , EParadigm Paradigm = DefaultParadigm, TDetailPtrResultSecurity< D > = 0>
TOutcome< Paradigm, TDetailPtrResult< 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.
ParadigmThe paradigm to work under.
Parameters
CursorIdThe identifier of the cursor.
DetailIndexHintThe index of the detail hinting.
Returns
The detail of the current iteration at a certain index.

◆ GetDetailHinted() [3/6]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<EParadigm Paradigm = DefaultParadigm, TDetailPtrResultSecurity< UDetail > = 0>
TOutcome< Paradigm, TDetailPtrResult< 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.

Template Parameters
ParadigmThe paradigm to work under.
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() [4/6]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<EParadigm Paradigm, class D , TDetailPtrResultSecurity< D > = 0>
TOutcome< Paradigm, TDetailPtrResult< 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
ParadigmThe paradigm to work under.
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() [5/6]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<class D , EParadigm Paradigm = DefaultParadigm, TDetailPtrResultSecurity< D > = 0>
TOutcome< Paradigm, TDetailPtrResult< 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.
ParadigmThe paradigm to work under.
Parameters
DetailIndexHintThe index of the detail hinting.
Returns
The detail of the current iteration at a certain index.

◆ GetDetailHinted() [6/6]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<EParadigm Paradigm = DefaultParadigm, TDetailPtrResultSecurity< UDetail > = 0>
TOutcome< Paradigm, TDetailPtrResult< 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.

Template Parameters
ParadigmThe paradigm to work under.
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/10]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<EParadigm Paradigm, typename T >
TOutcome< Paradigm, 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
ParadigmThe paradigm to work under.
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/10]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<typename T , EParadigm Paradigm = DefaultParadigm>
auto 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.
ParadigmThe paradigm to work under.
Parameters
CursorIdThe identifier of the embedded cursor.
TraitIndexHintThe hinting index of the trait.
Returns
A copy of the trait.

◆ GetTraitHinted() [3/10]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<EParadigm Paradigm, typename T >
TOutcome< Paradigm > 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
ParadigmThe paradigm to work under.
TThe type of the trait to get.
Parameters
[in]CursorIdThe identifier of the cursor to get from.
[in]TraitIndexHintThe index of the trait hinting.
[out]OutTraitDataThe output trait data.
[in]bTraitDataInitializedWas trait data initialized prior to calling this function?
Returns
The status of the operation.

◆ GetTraitHinted() [4/10]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<typename T , EParadigm Paradigm = DefaultParadigm>
auto 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.
ParadigmThe paradigm to work under.
Parameters
[in]CursorIdThe identifier of the cursor to get from.
[in]TraitIndexHintThe index of the trait hinting.
[out]OutTraitDataThe output trait data.
[in]bTraitDataInitializedWas trait data initialized prior to calling this function?
Returns
The status of the operation.

◆ GetTraitHinted() [5/10]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<EParadigm Paradigm = DefaultParadigm>
TOutcome< Paradigm > 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.

Template Parameters
ParadigmThe paradigm to work under.
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() [6/10]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<EParadigm Paradigm, typename T >
TOutcome< Paradigm, 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
ParadigmThe paradigm to work under.
TThe type of the trait.
Parameters
TraitIndexHintThe index of the trait hint.
Returns
A copy of the trait.

◆ GetTraitHinted() [7/10]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<typename T , EParadigm Paradigm = DefaultParadigm>
TOutcome< Paradigm, 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.
ParadigmThe paradigm to work under.
Parameters
TraitIndexHintThe index of the trait hint.
Returns
A copy of the trait.

◆ GetTraitHinted() [8/10]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<EParadigm Paradigm, typename T >
auto 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
ParadigmThe paradigm to work under.
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() [9/10]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<typename T , EParadigm Paradigm = DefaultParadigm>
auto 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
ParadigmThe paradigm to work under.
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() [10/10]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<EParadigm Paradigm = DefaultParadigm>
TOutcome< Paradigm > 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.

Template Parameters
ParadigmThe paradigm to work under.
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/4]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<EParadigm Paradigm = DefaultParadigm>
TOutcome< Paradigm, TTraitVoidPtrResult< 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/4]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<EParadigm Paradigm, typename T , TTraitPtrResultSecurity< Paradigm, T > = 0>
TOutcome< Paradigm, TTraitPtrResult< Paradigm, T > > 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/4]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<typename T , EParadigm Paradigm = DefaultParadigm, TTraitPtrResultSecurity< Paradigm, T > = 0>
TOutcome< Paradigm, TTraitPtrResult< Paradigm, T > > 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() [4/4]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<EParadigm Paradigm = DefaultParadigm>
TTraitVoidPtrResult< 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/6]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<EParadigm Paradigm, typename T >
TOutcome< Paradigm, TTraitPtrResult< Paradigm, T > > 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
ParadigmThe security paradigm override.
TThe type of the trait to get.
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/6]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<typename T , EParadigm Paradigm = DefaultParadigm>
TOutcome< Paradigm, TTraitPtrResult< Paradigm, T > > 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() [3/6]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<EParadigm Paradigm = DefaultParadigm>
TOutcome< Paradigm, TTraitVoidPtrResult< 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() [4/6]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<EParadigm Paradigm, typename T >
TOutcome< Paradigm, TTraitPtrResult< Paradigm, T > > 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() [5/6]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<typename T , EParadigm Paradigm = DefaultParadigm>
TOutcome< Paradigm, TTraitPtrResult< Paradigm, T > > 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() [6/6]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<EParadigm Paradigm = DefaultParadigm>
TOutcome< Paradigm, TTraitVoidPtrResult< 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() [1/2]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<EParadigm Paradigm, typename T , TTraitRefResultSecurity< Paradigm, T > = 0>
TOutcome< Paradigm, TTraitRefResult< Paradigm, T > > TChain< ChunkItT, BeltItT, InDefaultParadigm >::GetTraitRef ( const int32  CursorId = DefaultCursorId) const
inline

Get a trait reference on the current iteration.

Template Parameters
ParadigmThe paradigm to work under.
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.

◆ GetTraitRef() [2/2]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<typename T , EParadigm Paradigm = DefaultParadigm, TTraitRefResultSecurity< Paradigm, T > = 0>
TOutcome< Paradigm, TTraitRefResult< Paradigm, T > > 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 paradigm to work under.
ParadigmThe security paradigm override to use.
Parameters
CursorIdThe identifier of the cursor to get from.
Returns
The resulting trait data.

◆ GetTraitRefHinted() [1/4]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<EParadigm Paradigm, typename T , TTraitPtrResultSecurity< Paradigm, T > = 0>
TOutcome< Paradigm, TTraitRefResult< Paradigm, T > > 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
ParadigmThe security paradigm override.
TThe type of the trait to get.
Parameters
CursorIdThe identifier of the cursor to get from.
TraitIndexHintThe index of the trait hinting.
Returns
The trait reference.

◆ GetTraitRefHinted() [2/4]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<typename T , EParadigm Paradigm = DefaultParadigm, TTraitPtrResultSecurity< Paradigm, T > = 0>
TOutcome< Paradigm, TTraitRefResult< Paradigm, T > > 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() [3/4]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<EParadigm Paradigm, typename T , TTraitPtrResultSecurity< Paradigm, T > = 0>
TOutcome< Paradigm, TTraitRefResult< Paradigm, T > > 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
ParadigmThe security paradigm override.
TThe type of the trait to get.
Parameters
TraitIndexHintThe index of the trait hinting.
Returns
The trait reference.

◆ GetTraitRefHinted() [4/4]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<typename T , EParadigm Paradigm = DefaultParadigm, TTraitPtrResultSecurity< Paradigm, T > = 0>
TOutcome< Paradigm, TTraitRefResult< Paradigm, T > > 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/5]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<typename FunctorT , EParadigm Paradigm = DefaultParadigm>
auto 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.
ParadigmThe paradigm to work under.
TsThe type of components to provide to theTComponentTypesPack mechanic.
Returns
The status of the operation.

◆ Operate() [2/5]

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

Process the chain using a functor mechanic.

Template Parameters
ParadigmThe paradigm to work under.
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() [3/5]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<EParadigm Paradigm = DefaultParadigm, typename MechanicT = void, typename std::enable_if<!std::is_function< MechanicT >::value, bool >::type = true>
auto TChain< ChunkItT, BeltItT, InDefaultParadigm >::Operate ( const MechanicT &  InMechanic) const
inline

Process the chain using a functor mechanic.

Supports lambdas. Constant mechanic version.

Template Parameters
ParadigmThe paradigm to work under.
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() [4/5]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<EParadigm Paradigm = DefaultParadigm, typename FunctionT = void, typename std::enable_if< std::is_function< FunctionT >::value, bool >::type = true>
auto TChain< ChunkItT, BeltItT, InDefaultParadigm >::Operate ( FunctionT *const  InMechanic) const
inline

Process the chain using a free function.

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

◆ Operate() [5/5]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<EParadigm Paradigm = DefaultParadigm, typename MechanicT = void, typename std::enable_if<!std::is_function< MechanicT >::value, bool >::type = true>
auto TChain< ChunkItT, BeltItT, InDefaultParadigm >::Operate ( MechanicT &  InMechanic) const
inline

Process the chain using a functor mechanic.

Supports lambdas. Mutable mechanic version.

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

◆ OperateConcurrently() [1/5]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<EParadigm Paradigm = DefaultParadigm, typename FunctorT = void, typename std::enable_if<(IsSolid||IsUnsafe(Paradigm)) &&!std::is_void< FunctorT >::value &&!std::is_function< std::decay_t< FunctorT > >::value, bool >::type = true>
auto 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/5]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<typename FunctorT , EParadigm Paradigm = DefaultParadigm, more::enable_if_t<(IsSolid||IsUnsafe(Paradigm)) &&!std::is_void< FunctorT >::value, bool > = true>
auto 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
FunctorTThe type of the mechanical functor to operate on the slots.
ParadigmThe security paradigm to utilize.
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 outcome of the operation.

◆ OperateConcurrently() [3/5]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<EParadigm Paradigm, typename FunctorT , more::enable_if_t<(IsSolid||IsUnsafe(Paradigm)) &&!std::is_void< FunctorT >::value, bool > = true>
auto 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 outcome of the operation.

◆ OperateConcurrently() [4/5]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<EParadigm Paradigm = DefaultParadigm, typename FunctionT = void, more::enable_if_t<(IsSolid||IsUnsafe(Paradigm)) &&std::is_function< FunctionT >::value, bool > = true>
auto 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 free function 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() [5/5]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<EParadigm Paradigm = DefaultParadigm, typename FunctorT = void, typename std::enable_if<(IsSolid||IsUnsafe(Paradigm)) &&!std::is_void< FunctorT >::value &&!std::is_function< std::decay_t< FunctorT > >::value, bool >::type = true>
auto 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 ( bool  bWaitForOperatings = true)
inlineoverridevirtual

Reset the chain completely.

Parameters
bWaitForOperatingsShould the method wait till all the operatings are complete.
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

◆ AllowsChanges

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

Are subjects of the chain mutable?

◆ AllowsDirectTraitAccess

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

Is direct access to the traits data allowed?

◆ AllowsStructuralChanges

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

Are structural changes (adding/removing components) allowed?

◆ 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: