Apparatus
Version 1.23
ECS data-oriented workflow for Unreal Engine.
|
A group of iterable locked together in a sequence. More...
#include <Chain.h>
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, T > | GetTraitHinted (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, T > | GetTraitHinted (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, T > | GetTraitHinted (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 | |
TChain & | operator= (TChain &&InChain) |
Move a chain. | |
TChain & | operator= (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 | |
AMechanism * | GetOwner () const |
Get the owning mechanism of the chain. | |
const FFilter & | GetFilter () 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 | |
AMechanism * | Owner = nullptr |
The owner of the chain. | |
int32 | Id = InvalidId |
A unique identifier of the chain. | |
std::atomic< UsersCountValueType > | UsersCount {0} |
The number of users currently needing the chain. | |
std::atomic< bool > | bDisposed {true} |
Was this chain disposed and ready to be reused? | |
std::atomic< bool > | bDisposing {false} |
Is the chain currently being disposed? | |
std::atomic< bool > | bStopIterating {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< OperatingsCountValueType > | OperatingsCount {0} |
The number of current operatings on the chain. | |
std::atomic< ConcurrencyLevelValueType > | ConcurrencyLevel {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. | |
A group of iterable locked together in a sequence.
Chains internally consist of segments and are iterated by the cursors.
ChunkItT | The type of the chunk iterator used. |
BeltItT | The type of the belt iterator used. |
InDefaultParadigm | The access security paradigm to use by default. |
typedef BeltItT TChain< ChunkItT, BeltItT, InDefaultParadigm >::BeltItType |
typedef ChunkItT TChain< ChunkItT, BeltItT, InDefaultParadigm >::ChunkItType |
using TChain< ChunkItT, BeltItT, InDefaultParadigm >::FCursor = TCursor<> |
Non-templated cursor version.
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.
typedef ChunkItT::SubjectHandleType TChain< ChunkItT, BeltItT, InDefaultParadigm >::SubjectHandleType |
The subject handle argument type.
typedef ChunkItT::SubjectivePtrType TChain< ChunkItT, BeltItT, InDefaultParadigm >::SubjectivePtrType |
The subjective argument type, including the possible 'const' specification.
Doesn't include the pointer part.
using TChain< ChunkItT, BeltItT, InDefaultParadigm >::Super = FCommonChain |
using TChain< ChunkItT, BeltItT, InDefaultParadigm >::TDetailPtrResult = typename ChunkItT::template TDetailPtrResult<D> |
The class of a detail pointer returned by the methods.
D | The class of the detail. |
using TChain< ChunkItT, BeltItT, InDefaultParadigm >::TDetailPtrResultSecurity = typename ChunkItT::template TDetailPtrResultSecurity<D> |
The class of a detail pointer returned by the methods.
D | The class of the detail. |
using TChain< ChunkItT, BeltItT, InDefaultParadigm >::TTraitPtrResult = typename ChunkItT::template TTraitPtrResult<Paradigm, T> |
The type of a trait pointer returned by the methods.
Paradigm | The access safety paradigm. |
T | The type of the trait. |
using TChain< ChunkItT, BeltItT, InDefaultParadigm >::TTraitPtrResultSecurity = typename ChunkItT::template TTraitPtrResultSecurity<Paradigm, T> |
Protect the type of a trait pointer returned by the methods.
Paradigm | The access safety paradigm. |
T | The type of the trait. |
using TChain< ChunkItT, BeltItT, InDefaultParadigm >::TTraitRefResult = typename ChunkItT::template TTraitRefResult<Paradigm, T> |
The type of a trait reference returned by the methods.
Paradigm | The access safety paradigm. |
T | The type of the trait. |
using TChain< ChunkItT, BeltItT, InDefaultParadigm >::TTraitRefResultSecurity = typename ChunkItT::template TTraitRefResultSecurity<Paradigm, T> |
Protect the type of a trait reference returned by the methods.
Paradigm | The access safety paradigm. |
T | The type of the trait. |
using TChain< ChunkItT, BeltItT, InDefaultParadigm >::TTraitVoidPtrResult = typename ChunkItT::template TTraitVoidPtrResult<Paradigm> |
The type of a trait void pointer returned by the methods.
Paradigm | The access safety paradigm. |
using TChain< ChunkItT, BeltItT, InDefaultParadigm >::TTraitVoidPtrResultSecurity = typename ChunkItT::template TTraitVoidPtrResultSecurity<Paradigm> |
Protect the type of a trait void pointer returned by the methods.
Paradigm | The access safety paradigm. |
enum TChain::EGatheringType |
|
inline |
Initialize a chain with its owner.
|
inline |
Construct a new chain as a copy of another one.
InChain | A chain to copy. |
|
inlinevirtual |
Finalize the chain.
|
inline |
Advance iterating the chain to the next iteration using the embedded cursor.
CursorId | The identifier of an already iterating cursor. |
|
inline |
Begin iterating the chain using an embedded cursor.
CursorId | The identifier of the cursor to use. Will be obtained anew if doesn't exist. |
Offset | The slot offset to begin iterating with. |
Limit | The maximum number of slots to iterate by. |
|
inline |
Begin or advance iterating the chain.
CursorId | The identifier of the cursor. Created anew if needed. |
Offset | The slot offset to begin iterating with. |
Limit | The maximum number of slots to iterate by. |
false
if the iteration should be ended.
|
inline |
Get the detail on the current iteration at a certain line index.
Paradigm | The paradigm to work under. |
CursorId | The embedded cursor identifier. |
LineIndex | The index of the detail line. |
|
inline |
Get the detail on the current iteration at a certain line index.
Paradigm | The paradigm to work under.. |
LineIndex | The index of the detail line. |
|
inline |
Set to chain a set of iterables with a filter.
FilterT | The type of filter used. Forwarded. |
IterableT | The type of iterables to enchain. |
AllocatorT | The type of iterables array allocator. |
[in] | InFilter | The target filter to enchain with. |
[in] | InIterables | The iterables to enchain. |
|
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.
InSlotIndex | The index of the slot to find. |
OutLocalIndex | The local index of the slot within the chain. |
SegmentOffset | The starting segment offset. |
|
inline |
Get a detail of a specific type on the current iteration.
Paradigm | The paradigm to work under. |
CursorId | The identifier of the embedded cursor. |
DetailClass | The class of the detail to get. |
|
inline |
Get the detail on the current iteration of a certain class.
Templated version.
Paradigm | The paradigm to work under. |
D | The class of the detail to get. |
|
inline |
Get the detail on the current iteration of a certain class.
Templated version.
D | The class of the detail to get. |
Paradigm | The paradigm to work under. |
CursorId | The identifier of the embedded cursor. |
|
inline |
Get the detail on the current iteration of a certain class.
Paradigm | The paradigm to work under. |
DetailClass | The class of the detail to get. |
|
inline |
Get the detail on the current iteration at a certain index hinted.
Templated version.
Paradigm | The paradigm to work under. |
D | The class of the detail to get. |
CursorId | The identifier of the cursor. |
DetailIndexHint | The index of the detail hinting. |
|
inline |
Get the detail on the current iteration at a certain index hinted.
Templated version.
D | The class of the detail to get. |
Paradigm | The paradigm to work under. |
CursorId | The identifier of the cursor. |
DetailIndexHint | The index of the detail hinting. |
|
inline |
Get the detail on the current iteration at a certain index.
Paradigm | The paradigm to work under. |
CursorId | The identifier of the cursor to examine. |
DetailClass | The class of the detail to get. |
DetailIndexHint | The hinting index of the detail. |
|
inline |
Get the detail on the current iteration at a certain index hinted.
Templated version.
Paradigm | The paradigm to work under. |
T | The class of the detail to get. |
DetailIndexHint | The index of the detail hinting. |
|
inline |
Get the detail on the current iteration at a certain index hinted.
Templated version.
T | The class of the detail to get. |
Paradigm | The paradigm to work under. |
DetailIndexHint | The index of the detail hinting. |
|
inline |
Get the detail on the current iteration at a certain index.
Paradigm | The paradigm to work under. |
DetailClass | The class of the detail to get. |
DetailIndexHint | The index of the detail hinting. |
|
inline |
A unique identifier of an embedded chain.
|
inline |
Get the subject of the current iteration.
|
inline |
Get the subjective of the current iteration (if any).
nullptr
, if there is none.
|
inline |
Get a trait on the current iteration.
Templated version.
T | The type of the trait to get. |
CursorId | The identifier of the cursor to get from. |
OutTraitData | The output trait data buffer. The size of the buffer must be enough to store the whole trait. |
bTraitDataInitialized | Was trait data initialized prior to calling this function? |
|
inline |
Get a trait of a certain type on the current iteration.
CursorId | The identifier of the cursor to get from. |
TraitType | The type of the trait. |
OutTraitData | The output trait data. |
bTraitDataInitialized | Was trait data initialized prior to calling this function? |
|
inline |
Get a trait copy on the current iteration.
Templated version.
T | The type of the trait to get. |
CursorId | The identifier of the cursor to examine. |
|
inline |
Get the trait on the current iteration.
Templated version.
T | The type of the trait. |
OutTraitData | The output trait data. |
bTraitDataInitialized | Was trait data initialized prior to calling this function? |
|
inline |
Get the trait on the current iteration.
TraitType | The type of the trait to get. |
OutTraitData | The output trait data buffer. The size of the buffer must be enough to store the whole trait. |
bTraitDataInitialized | Was trait data initialized prior to calling this function? |
|
inline |
Get a copy of a trait on the current iteration at a specified index hinted.
Templated version.
Paradigm | The paradigm to work under. |
T | The type of the trait. |
CursorId | The identifier of the embedded cursor. |
TraitIndexHint | The hinting index of the trait. |
|
inline |
Get a copy of a trait on the current iteration at a specified index hinted.
Templated version.
T | The type of the trait. |
Paradigm | The paradigm to work under. |
CursorId | The identifier of the embedded cursor. |
TraitIndexHint | The hinting index of the trait. |
|
inline |
Get the trait on the current iteration at a specified index hinted.
Templated version.
Paradigm | The paradigm to work under. |
T | The type of the trait to get. |
[in] | CursorId | The identifier of the cursor to get from. |
[in] | TraitIndexHint | The index of the trait hinting. |
[out] | OutTraitData | The output trait data. |
[in] | bTraitDataInitialized | Was trait data initialized prior to calling this function? |
|
inline |
Get the trait on the current iteration at a specified index hinted.
Templated version.
T | The type of the trait to get. |
Paradigm | The paradigm to work under. |
[in] | CursorId | The identifier of the cursor to get from. |
[in] | TraitIndexHint | The index of the trait hinting. |
[out] | OutTraitData | The output trait data. |
[in] | bTraitDataInitialized | Was trait data initialized prior to calling this function? |
|
inline |
Get the trait on the current iteration at a specified index hinted.
Paradigm | The paradigm to work under. |
CursorId | The identifier of the cursor to get from. |
TraitIndexHint | The index of the trait. |
TraitType | The type of the trait. |
OutTraitData | The output trait data. |
bTraitDataInitialized | Was trait data initialized prior to calling this function? |
|
inline |
Get a copy of a trait on the current iteration at a specified index hinted.
Templated version.
Paradigm | The paradigm to work under. |
T | The type of the trait. |
TraitIndexHint | The index of the trait hint. |
|
inline |
Get a copy of a trait on the current iteration at a specified index hinted.
Templated version.
T | The type of the trait. |
Paradigm | The paradigm to work under. |
TraitIndexHint | The index of the trait hint. |
|
inline |
Get the trait on the current iteration at a specified index hinted.
Templated version.
Paradigm | The paradigm to work under. |
T | The type of the trait. |
TraitIndexHint | The index of the trait hint. |
OutTraitData | The output trait data. |
bTraitDataInitialized | Was trait data initialized prior to calling this function? |
|
inline |
Get the trait on the current iteration at a specified index hinted.
Templated version.
Paradigm | The paradigm to work under. |
T | The type of the trait. |
TraitIndexHint | The index of the trait hint. |
OutTraitData | The output trait data. |
bTraitDataInitialized | Was trait data initialized prior to calling this function? |
|
inline |
Get the trait on the current iteration at a specified index hinted.
Paradigm | The paradigm to work under. |
TraitType | The type of the trait to get. |
TraitIndexHint | The index of the trait hinting. |
OutTraitData | The output trait data. |
bTraitDataInitialized | Was trait data initialized prior to calling this function? |
|
inline |
Get a pointer to a trait of a certain type on the current iteration.
Paradigm | The security paradigm override to use. |
CursorId | The identifier of the cursor to get from. |
TraitType | The type of the trait to get. |
|
inline |
Get a pointer to a trait of a certain type on the current iteration.
Templated version.
T | The type of the trait to get. |
Paradigm | The security paradigm override to use. |
CursorId | The identifier of the cursor to get from. |
|
inline |
Get a pointer to a trait of a certain type on the current iteration.
Templated version.
T | The type of the trait to get. |
Paradigm | The security paradigm override to use. |
CursorId | The identifier of the cursor to get from. |
|
inline |
Get a trait pointer of a specific type on the current iteration.
Paradigm | The security paradigm override to use. |
TraitType | The type of the trait to get. |
|
inline |
Get a pointer to the trait on the current iteration at a specified index hinted.
Templated version.
Paradigm | The security paradigm override. |
T | The type of the trait to get. |
CursorId | The identifier of the cursor to get from. |
TraitIndexHint | The index of the trait hinting. |
|
inline |
Get a pointer to the trait on the current iteration at a specified index hinted.
Templated version.
T | The type of the trait to get. |
Paradigm | The security paradigm override. |
CursorId | The identifier of the cursor to get from. |
TraitIndexHint | The index of the trait hinting. |
|
inline |
Get a pointer to the trait on the current iteration at a specified index hinted.
Paradigm | The security paradigm override. |
CursorId | The identifier of the cursor to get from. |
TraitType | The type of the trait to get. |
TraitIndexHint | The index of the trait hinting. |
|
inline |
Get a pointer to the trait on the current iteration at a specified index hinted.
Templated version.
T | The type of the trait to get. |
Paradigm | The security paradigm override. |
TraitIndexHint | The index of the trait hinting. |
|
inline |
Get a pointer to the trait on the current iteration at a specified index hinted.
Templated version.
T | The type of the trait to get. |
Paradigm | The security paradigm override. |
TraitIndexHint | The index of the trait hinting. |
|
inline |
Get a pointer to the trait on the current iteration at a specified index hinted.
Paradigm | The security paradigm override. |
TraitType | The type of the trait to get. |
TraitIndexHint | The index of the trait hinting. |
|
inline |
Get a trait reference on the current iteration.
Paradigm | The paradigm to work under. |
T | The type of the trait to get. |
Paradigm | The security paradigm override to use. |
CursorId | The identifier of the cursor to get from. |
|
inline |
Get a trait reference on the current iteration.
T | The type of the trait to get. |
Paradigm | The paradigm to work under. |
Paradigm | The security paradigm override to use. |
CursorId | The identifier of the cursor to get from. |
|
inline |
Get a reference for the trait on the current iteration at a specified index hinted.
Templated version.
Paradigm | The security paradigm override. |
T | The type of the trait to get. |
CursorId | The identifier of the cursor to get from. |
TraitIndexHint | The index of the trait hinting. |
|
inline |
Get a reference for the trait on the current iteration at a specified index hinted.
Templated version.
T | The type of the trait to get. |
Paradigm | The security paradigm override. |
CursorId | The identifier of the cursor to get from. |
TraitIndexHint | The index of the trait hinting. |
|
inline |
Get a reference for the trait on the current iteration at a specified index hinted.
Templated version.
Paradigm | The security paradigm override. |
T | The type of the trait to get. |
TraitIndexHint | The index of the trait hinting. |
|
inline |
Get a reference for the trait on the current iteration at a specified index hinted.
Templated version.
T | The type of the trait to get. |
Paradigm | The security paradigm override. |
TraitIndexHint | The index of the trait hinting. |
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.
T | The type of traits to copy. Must match the current filtering used. |
AllocatorT | The allocator used within the array. |
[out] | OutArray | The array to output the traits to. |
[in] | GatheringType | The type of gathering to use. |
|
inline |
Check if there any any viable (active) embedded cursors within the chain.
|
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).
|
inline |
Prepare the chain for iterating returning the cursor.
Ps | The types of components to provide efficiently using the hinting mechanism. |
Offset | The slot offset to begin iterating with. |
Limit | The maximum number of slots to iterate by. |
|
inline |
Process the chain using a functor mechanic.
FunctorT | The type of the mechanical functor to operate on the chain slots. |
Paradigm | The paradigm to work under. |
Ts | The type of components to provide to theTComponentTypesPack mechanic. |
|
inline |
Process the chain using a functor mechanic.
Paradigm | The paradigm to work under. |
FunctorT | The type of the mechanical functor to operate on the chain slots. |
Ts | The type of components to provide to theTComponentTypesPack mechanic. |
|
inline |
Process the chain using a functor mechanic.
Supports lambdas. Constant mechanic version.
Paradigm | The paradigm to work under. |
MechanicT | The type of the functor to operate on the enchained slots. Can be a lambda expression. |
InMechanic | The functor mechanic to operate with. Can be a lambda expression. |
|
inline |
Process the chain using a free function.
Paradigm | The paradigm to work under. |
FunctionT | The type of the function to operate on the enchained slots. |
|
inline |
Process the chain using a functor mechanic.
Supports lambdas. Mutable mechanic version.
Paradigm | The paradigm to work under. |
MechanicT | The type of the functor to operate on the enchained slots. Can be a lambda expression. |
|
inline |
Process the chain using a functor mechanic in a parallel manner.
Supports lambdas. Constant mechanic version.
Paradigm | The security paradigm to utilize. |
FunctorT | The type of the mechanic functor to operate on the slots. May be a lambda. |
InMechanic | The mechanic functor to operate with. Can be a lambda. |
ThreadsCountMax | The maximum number of threads to process with. |
SlotsPerThreadMin | The minimum number of slots per thread to process. |
bSync | Should the operation be synced within the current branch. |
|
inline |
Process the chain using a functor mechanic in a parallel manner.
FunctorT | The type of the mechanical functor to operate on the slots. |
Paradigm | The security paradigm to utilize. |
Ts | The type of components to supply to the mechanic. |
ThreadsCountMax | The maximum number of threads to process with. |
SlotsPerThreadMin | The minimum number of slots per thread to process. |
bSync | Should the operation be synced within the current branch. |
|
inline |
Process the chain using a functor mechanic in a parallel manner.
Paradigm | The security paradigm to utilize. |
FunctorT | The type of the mechanical functor to operate on the slots. |
Ts | The type of components to supply to the mechanic. |
ThreadsCountMax | The maximum number of threads to process with. |
SlotsPerThreadMin | The minimum number of slots per thread to process. |
bSync | Should the operation be synced within the current branch. |
|
inline |
Process the chain using a function mechanic in a parallel manner.
Paradigm | The security paradigm to utilize. |
FunctionT | The type of the mechanic free function to operate on the slots. |
InMechanic | The mechanical function to operate with. |
ThreadsCountMax | The maximum number of threads to process with. |
SlotsPerThreadMin | The minimum number of slots per thread to process. |
bSync | Should the operation be synced within the current branch. |
|
inline |
Process the chain using a functor mechanic in a parallel manner.
Supports lambdas.
Paradigm | The security paradigm to utilize. |
FunctorT | The type of the mechanic functor to operate on the slots. May be a lambda. |
InMechanic | The mechanic functor to operate with. Can be a lambda. |
ThreadsCountMax | The maximum number of threads to process with. |
SlotsPerThreadMin | The minimum number of slots per thread to process. |
bSync | Should the operation be synced within the current branch. |
|
inline |
Set a chain equal to another chain.
|
inline |
Move a chain.
|
inlineoverridevirtual |
Reset the chain completely.
bWaitForOperatings | Should the method wait till all the operatings are complete. |
Reimplemented from FCommonChain.
|
friend |
|
friend |
|
friend |
|
staticconstexpr |
Are subjects of the chain mutable?
|
staticconstexpr |
Is direct access to the traits data allowed?
|
staticconstexpr |
Are structural changes (adding/removing components) allowed?
|
staticconstexpr |
The default access security paradigm.
|
staticconstexpr |
Is the chain a solid-locking one?