Apparatus
Version 1.23
ECS data-oriented workflow for Unreal Engine.
|
The iterator of the belt slots. More...
#include <BeltIt.h>
Public Types | |
typedef SubjectHandleT | SubjectHandleType |
The type of the subject handle used within the belt iterator. | |
typedef SubjectHandleType::SubjectivePtrType | SubjectivePtrType |
The type of the subjective used. | |
Public Member Functions | |
UBelt * | GetBelt () const |
Get the belt of the iterator. | |
const FFilter & | GetFilter () const |
Get the filter of the current iterating. | |
const FDetailmark & | GetDetailmark () const |
Get the detailmark of the current iterating. | |
const TArray< int32 > & | GetMainlineDetailsIndices () const |
Get the indices of the used details during the iterating. | |
int32 | GetSlotIndex () const |
Get the current belt's slot index. | |
int32 | GetComboIndex () const |
Get the current sub-slot combination index. | |
int32 | GetCombosCount () const |
Get the current number of combinations within the active slot. | |
TBeltIt () | |
Construct a new uninitialized iterator. | |
TBeltIt (TBeltIt &&InIterator) | |
Move-construct a new belt iterator. | |
TBeltIt (const TBeltIt &InIterator) | |
Copy-construct a new belt iterator. | |
bool | IsLocking () const |
Check if the iterator should be locking its belt. | |
TBeltIt & | operator= (TBeltIt &&InIterator) |
Move-assign the iterator. | |
TBeltIt & | operator= (const TBeltIt &InIterator) |
Assign the iterator. | |
bool | IsViable () const |
Check if the iterator is viable and is not at the end of its belt. | |
operator bool () const | |
Check if the iterator is valid and not at the end. | |
const FBeltSlot & | GetSlot () const |
Get the current slot of the iterator. | |
SubjectivePtrType | GetSubjective () const |
Get the currently iterated subjective. | |
SubjectHandleT | GetSubject () const |
Get the currently iterated subject. | |
EApparatusStatus | Advance () |
Advance to the next iteration. | |
TBeltIt & | operator++ () |
Get the next iterator (prefix version). | |
TBeltIt | operator++ (int) |
Get the next iterator (postfix version). | |
bool | operator== (const TBeltIt &Other) const |
bool | operator!= (const TBeltIt &Other) const |
~TBeltIt () | |
Destroy the iterator unlocking the belt if necessary. | |
Details Getting | |
UDetail * | DetailAt (const int32 DetailIndex) const |
Get a detail at a certain index. | |
template<EParadigm Paradigm = EParadigm::Default> | |
auto | GetDetail (const TSubclassOf< UDetail > DetailClass) const |
Get a detail of a certain class. | |
template<EParadigm Paradigm, class D > | |
auto | GetDetail () const |
Get a detail of a certain class. | |
template<class D , EParadigm Paradigm = EParadigm::Default> | |
auto | GetDetail () const |
Get a detail of a certain class. | |
Hinted Details Getting | |
int32 | HintDetail (const TSubclassOf< UDetail > DetailClass) const |
Get the hinting index of a detail. | |
template<typename D > | |
constexpr int32 | HintDetail () const |
Get the hinting index of a detail. | |
template<EParadigm Paradigm = EParadigm::Default, TDetailPtrResultSecurity< UDetail > = 0> | |
TOutcome< Paradigm, UDetail * > | GetDetailHinted (const TSubclassOf< UDetail > DetailClass, const int32 DetailIndexHint) const |
Get a detail by a class at a certain index hinted. | |
template<EParadigm Paradigm, class D , TDetailPtrResultSecurity< D > = 0> | |
TOutcome< Paradigm, TDetailPtrResult< D > > | GetDetailHinted (const int32 DetailIndexHint) const |
Get a detail by a class at a certain index hinted. | |
template<class D , EParadigm Paradigm = EParadigm::Default, TDetailPtrResultSecurity< D > = 0> | |
TOutcome< Paradigm, TDetailPtrResult< D > > | GetDetailHinted (const int32 DetailIndexHint) const |
Get a detail by a class at a certain index hinted. | |
Traits Data Access | |
template<EParadigm Paradigm = EParadigm::Default, TTraitVoidPtrResultSecurity< Paradigm > = 0> | |
TOutcome< Paradigm, TTraitVoidPtrResult< Paradigm > > | GetTraitPtr (UScriptStruct *const TraitType) const |
Get a trait of a certain type from a currently iterated subject. | |
template<EParadigm Paradigm, typename T , TTraitPtrResultSecurity< Paradigm, T > = 0> | |
TOutcome< Paradigm, TTraitPtrResult< Paradigm, T > > | GetTraitPtr () const |
Get a pointer to a trait of a certain type from a currently iterated subject. | |
template<typename T , EParadigm Paradigm = EParadigm::Default, TTraitPtrResultSecurity< Paradigm, T > = 0> | |
TOutcome< Paradigm, TTraitPtrResult< Paradigm, T > > | GetTraitPtr () const |
Get a pointer to a trait of a certain type from a currently iterated subject. | |
template<EParadigm Paradigm, typename T , TTraitRefResultSecurity< Paradigm, T > = 0> | |
TOutcome< Paradigm, TTraitRefResult< Paradigm, T > > | GetTraitRef () const |
Get a trait of a certain type from a currently iterated subject. | |
template<typename T , EParadigm Paradigm = EParadigm::Default, TTraitRefResultSecurity< Paradigm, T > = 0> | |
TOutcome< Paradigm, TTraitRefResult< Paradigm, T > > | GetTraitRef () const |
Get a trait of a certain type from a currently iterated subject. | |
Traits Getting | |
template<EParadigm Paradigm = EParadigm::Default> | |
TOutcome< Paradigm > | GetTrait (UScriptStruct *const TraitType, void *const OutTraitData, const bool bTraitDataInitialized=true) const |
Get a trait of a certain type from a currently iterated subject. | |
template<EParadigm Paradigm, typename T > | |
TOutcome< Paradigm > | GetTrait (T &OutTrait, const bool bTraitInitialized=true) const |
Get a trait of a certain type from a currently iterated subject. | |
template<typename T , EParadigm Paradigm = EParadigm::Default> | |
auto | GetTrait (T &OutTrait, const bool bTraitInitialized=true) const |
Get a trait of a certain type from a currently iterated subject. | |
template<EParadigm Paradigm, typename T > | |
auto | GetTrait () const |
Get a copy of a trait of a certain type from a currently iterated subject. | |
template<typename T , EParadigm Paradigm = EParadigm::Default> | |
auto | GetTrait () const |
Get a copy of a trait of a certain type from a currently iterated subject. | |
Static Public Member Functions | |
static constexpr bool | IsHandleSolid () |
The solidity state of the iterator. | |
Static Public Attributes | |
static constexpr bool | IsSolid = SubjectHandleType::IsHandleSolid() |
The solidity state of the chunk iterator. | |
static constexpr bool | AllowsChanges = SubjectHandleType::AllowsChanges |
Is the subject of a mutable semantics. | |
static constexpr bool | AllowsStructuralChanges = SubjectHandleType::AllowsStructuralChanges |
Are structural changes (adding/removing components) allowed? | |
static constexpr bool | AllowsDirectTraitAccess = SubjectHandleType::AllowsDirectTraitAccess |
The direct trait data access status. | |
static constexpr auto | InvalidSlotIndex = FBeltSlot::InvalidIndex |
Invalid belt slot index. | |
static constexpr auto | InvalidComboIndex = FBeltSlot::InvalidComboIndex |
Invalid combination index. | |
static constexpr auto | InvalidDetailIndex = UBelt::InvalidDetailLineIndex |
Invalid detail index. | |
Friends | |
template<typename ChunkItT , typename BeltItT , EParadigm Paradigm> | |
struct | TChain |
class | UBelt |
The iterator of the belt slots.
This actually iterates inter-combinations when there are multiple details of the same type within the slot and the locking filter.
typedef SubjectHandleT TBeltIt< SubjectHandleT >::SubjectHandleType |
The type of the subject handle used within the belt iterator.
typedef SubjectHandleType::SubjectivePtrType TBeltIt< SubjectHandleT >::SubjectivePtrType |
The type of the subjective used.
Construct a new uninitialized iterator.
|
inline |
Move-construct a new belt iterator.
|
inline |
Copy-construct a new belt iterator.
Destroy the iterator unlocking the belt if necessary.
|
inline |
Advance to the next iteration.
|
inline |
Get a detail at a certain index.
DetailIndex | The detail index, relative to the belt's detailmark. |
Get the belt of the iterator.
|
inline |
Get the current sub-slot combination index.
|
inline |
Get the current number of combinations within the active slot.
|
inline |
Get a detail of a certain class.
Statically typed version.
|
inline |
Get a detail of a certain class.
Statically typed version.
|
inline |
Get a detail of a certain class.
|
inline |
Get a detail by a class at a certain index hinted.
Templated version.
D | The class of the detail to get. |
DetailIndexHint | The hinting index of the detail. |
|
inline |
Get a detail by a class at a certain index hinted.
Templated version.
D | The class of the detail to get. |
DetailIndexHint | The hinting index of the detail. |
|
inline |
Get a detail by a class at a certain index hinted.
Paradigm | The paradigm to work under. |
DetailClass | The class of the detail to get. |
DetailIndexHint | The hinting index of the detail. |
|
inline |
Get the detailmark of the current iterating.
|
inline |
Get the filter of the current iterating.
|
inline |
Get the indices of the used details during the iterating.
Maps indices from the current filter's detailmark to the belt's detailmark.
|
inline |
Get the current slot of the iterator.
|
inline |
Get the current belt's slot index.
|
inline |
Get the currently iterated subject.
|
inline |
Get the currently iterated subjective.
|
inline |
Get a copy of a trait of a certain type from a currently iterated subject.
Copy-returning version.
Paradigm | The paradigm to work under. |
T | The type of the trait to get. |
|
inline |
Get a copy of a trait of a certain type from a currently iterated subject.
Copy-returning default paradigm version.
Paradigm | The paradigm to work under. |
T | The type of the trait to get. |
|
inline |
Get a trait of a certain type from a currently iterated subject.
Paradigm | The paradigm to work under. |
T | The type of the trait to get. |
OutTrait | The trait receiver. |
bTraitInitialized | Is the OutTrait actually initialized? |
|
inline |
Get a trait of a certain type from a currently iterated subject.
T | The type of the trait to get. |
Paradigm | The paradigm to work under. |
OutTrait | The trait receiver. |
bTraitInitialized | Is the OutTrait actually initialized? |
|
inline |
Get a trait of a certain type from a currently iterated subject.
Paradigm | The paradigm to work under. |
TraitType | The type of the trait to get. |
OutTraitData | The trait data receiver. |
bTraitDataInitialized | Is the OutTraitData buffer actually initialized? |
|
inline |
Get a pointer to a trait of a certain type from a currently iterated subject.
Statically typed paradigm version.
Paradigm | The paradigm to work under. |
T | The type of the trait to get. |
|
inline |
Get a pointer to a trait of a certain type from a currently iterated subject.
Statically typed version.
Paradigm | The paradigm to work under. |
T | The type of the trait to get a pointer of. |
|
inline |
Get a trait of a certain type from a currently iterated subject.
Dynamically-typed version.
Paradigm | The paradigm to work under. |
TraitType | The type of the trait to get. |
|
inline |
Get a trait of a certain type from a currently iterated subject.
Templated version.
T | The type of the trait to get. |
Paradigm | The access safety paradigm to use. |
|
inline |
Get a trait of a certain type from a currently iterated subject.
Templated version.
T | The type of the trait to get. |
Paradigm | The access safety paradigm to use. |
|
inlineconstexpr |
Get the hinting index of a detail.
Templated version.
INDEX_NONE
in that case.D | The detail class to query for. |
|
inline |
Get the hinting index of a detail.
DetailClass | The detail class to query for. |
|
inlinestaticconstexpr |
The solidity state of the iterator.
Check if the iterator should be locking its belt.
Check if the iterator is viable and is not at the end of its belt.
During the iteration process the current state of the iterator may point to some invalid slot (missing subjective) after its processing, but that doesn't mean that the iterator is not viable itself, since it can still advance to the next valid slot (if there is any).
Check if the iterator is valid and not at the end.
|
inline |
Get the next iterator (prefix version).
Get the next iterator (postfix version).
|
inline |
Assign the iterator.
InIterator | An iterator to assign from. |
|
inline |
Move-assign the iterator.
InIterator | An iterator to move. |
|
inline |
|
friend |
|
friend |
|
staticconstexpr |
Is the subject of a mutable semantics.
|
staticconstexpr |
The direct trait data access status.
|
staticconstexpr |
Are structural changes (adding/removing components) allowed?
|
staticconstexpr |
Invalid combination index.
|
staticconstexpr |
Invalid detail index.
|
staticconstexpr |
Invalid belt slot index.
|
staticconstexpr |
The solidity state of the chunk iterator.