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

A state of the chain iterating. More...

#include <Chain.h>

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

Public Types

using CursorSuper = FCommonCursor
 The base cursor type. More...
 
typedef TVariant< FEmptyVariantState, ChunkItType, BeltItTypeIteratorType
 The common iterator type. More...
 

Public Member Functions

constexpr int32 GetPartMappingSize () const
 Get the current size of the hinting mapping. More...
 
template<EParadigm RemappingParadigm = EParadigm::Safe>
int32 RemapPartIndex (const int32 PartIndex) const
 Remap a part index hint using the current mapping. More...
 
TCursoroperator= (TCursor &&InCursor)
 Move a cursor. More...
 
TCursoroperator= (const TCursor &InCursor)
 Copy a cursor. More...
 
const TChainGetOwner () const
 Get the owning chain of the cursor. More...
 
UClass * GetIterableClass () const
 Get the target sequence class. More...
 
bool IsViable () const
 Check if the cursor is viable and has not finished the iterating. More...
 
 operator bool () const
 Check if the cursor is viable. More...
 
void Reset ()
 Detach the cursor from the chain making it an invalid one. More...
 
bool Begin ()
 Begin iterating with the cursor using the current range. More...
 
bool Begin (const int32 InOffset, const int32 InLimit=TNumericLimits< int32 >::Max())
 Begin iterating with the cursor using the supplied range. More...
 
bool Advance ()
 Advance the iterator to the next slot. More...
 
bool Provide ()
 Begin or advance iterating the chain using this cursor. More...
 
SubjectHandleType GetSubject () const
 Get the subject of the current iteration. More...
 
SubjectivePtrType GetSubjective () const
 Get the subjective of the current iteration of the cursor. More...
 
template<EParadigm Paradigm = DefaultParadigm>
std::enable_if< AllowsDirectTraitAccess||(Paradigm<=EParadigm::Unsafe), TResultTraitVoidPtr< Paradigm > >::type GetTraitPtr (UScriptStruct *const TraitType) const
 Get a trait pointer of a certain type at the current cursor position. More...
 
template<typename T , EParadigm Paradigm = DefaultParadigm>
std::enable_if< AllowsDirectTraitAccess||(Paradigm<=EParadigm::Unsafe), TResultTraitPtr< T, Paradigm > >::type GetTraitPtr () const
 Get a trait pointer of a certain type. More...
 
template<typename T , EParadigm Paradigm = DefaultParadigm>
std::enable_if< AllowsDirectTraitAccess||(Paradigm<=EParadigm::Unsafe), TResultTraitRef< T, Paradigm > >::type GetTraitRef () const
 Get a trait reference of a certain type. More...
 
template<typename T >
T GetTrait () const
 Get a trait copy of a certain type. More...
 
EApparatusStatus GetTrait (UScriptStruct *const TraitType, void *const OutTraitData, const bool bTraitDataInitialized=true) const
 Get a trait of a certain type. More...
 
template<typename T >
EApparatusStatus GetTrait (T &OutTraitData, const bool bTraitDataInitialized=true) const
 Get a trait of a certain type. More...
 
template<EParadigm Paradigm = DefaultParadigm>
std::enable_if< AllowsDirectTraitAccess||(Paradigm<=EParadigm::Unsafe), TResultTraitVoidPtr< Paradigm > >::type GetTraitPtrHinted (UScriptStruct *const TraitType, const int32 TraitIndexHint) const
 Get a pointer to a trait of a certain type with an index hint. More...
 
template<typename T , EParadigm Paradigm = DefaultParadigm>
std::enable_if< AllowsDirectTraitAccess||(Paradigm<=EParadigm::Unsafe), TResultTraitPtr< T, Paradigm > >::type GetTraitPtrHinted (const int32 TraitIndexHint) const
 Get a pointer to a trait of a certain type with an index hint. More...
 
template<typename T , EParadigm Paradigm = DefaultParadigm>
std::enable_if< AllowsDirectTraitAccess||(Paradigm<=EParadigm::Unsafe), TResultTraitRef< T, Paradigm > >::type GetTraitRefHinted (const int32 TraitIndexHint) const
 Get a trait of a certain type with an index hint. More...
 
template<typename T >
T GetTraitHinted (const int32 TraitIndexHint) const
 Get a copy of a trait of a certain type with an index hint. More...
 
EApparatusStatus GetTraitHinted (UScriptStruct *const TraitType, const int32 TraitIndexHint, void *const OutTraitData, const bool bTraitDataInitialized=true) const
 Get a trait of a certain type with an index hint. More...
 
template<typename T >
EApparatusStatus GetTraitHinted (const int32 TraitIndexHint, T &OutTraitData, const bool bTraitDataInitialized=true) const
 Get a trait of a certain type with an index hint. More...
 
UDetailDetailAt (const int32 DetailIndex) const
 Get a detail at a certain index. More...
 
UDetailGetDetailHinted (const TSubclassOf< UDetail > DetailClass, const int32 DetailIndexHint) const
 Get a detail of a certain class at an index hinted. More...
 
template<class D >
TResultDetailPtr< DGetDetailHinted (const int32 DetailIndexHint) const
 Get a detail of a certain class at an index hinted. More...
 
TResultDetailPtr< UDetailGetDetail (const TSubclassOf< UDetail > DetailClass) const
 Get a detail of a certain class. More...
 
template<class D >
TResultDetailPtr< DGetDetail () const
 Get a detail of a certain class. More...
 
template<class P >
constexpr int32 IndexOfPart () const
 Find a hinting index for a part. More...
 
template<typename PartT >
PartT GetPart () const
 Get a part (trait, detail, subject, other) of the current slot by its type. More...
 
template<typename PartT >
PartT GetPartHinted (const int32 PartIndexHint) const
 Get a part (trait, detail, subject, other) of the current slot by its type with an index hint. More...
 
 TCursor (const TChain *const InOwner, const int32 InOffset=0, const int32 InLimit=TNumericLimits< int32 >::Max())
 Initialize a new cursor instance for a chain. More...
 
 TCursor (TCursor &&InCursor)
 Move-initialize a cursor. More...
 
 TCursor (const TCursor &InCursor)
 Copy-initialize a cursor. More...
 
template<typename ... OtherPs>
 TCursor (const TCursor< OtherPs... > &InCursor)
 Copy-initialize a cursor from an another cursor type. More...
 
 TCursor ()
 Initialize a new invalid cursor. More...
 
 ~TCursor ()
 Finalize the cursor. More...
 
- Public Member Functions inherited from FCommonChain::FCommonCursor
const FCommonChainGetOwner () const
 Get the owning chain of the cursor. More...
 
int32 GetChainSlotIndex () const
 Get the global (chain-relative) index of the current slot. More...
 
bool IsLimitReached () const
 Check if the iterating limit was reached. More...
 
bool ShouldStop () const
 Check if the cursor should stop iterating. More...
 

Static Public Attributes

static constexpr SIZE_T ChunkItIndex = IteratorType::template IndexOfType<ChunkItType>()
 The index of the chunk iterator within the variant type. More...
 
static constexpr SIZE_T BeltItIndex = IteratorType::template IndexOfType<BeltItType>()
 The index of the belt iterator within the variant type. More...
 

Friends

template<typename ... OtherPs>
struct TCursor
 

Additional Inherited Members

- Protected Member Functions inherited from FCommonChain::FCommonCursor
 FCommonCursor (const FCommonChain *const InOwner, const int32 InOffset=0, const int32 InLimit=TNumericLimits< int32 >::Max())
 Initialize a new cursor instance for a chain. More...
 
 FCommonCursor (FCommonCursor &&InCursor)
 Move-initialize a cursor. More...
 
 FCommonCursor (const FCommonCursor &InCursor)
 Copy-initialize a cursor. More...
 
 FCommonCursor ()
 Initialize a new invalid cursor. More...
 
virtual ~FCommonCursor ()
 Finalize the cursor. More...
 
- Protected Attributes inherited from FCommonChain::FCommonCursor
const FCommonChainOwner = nullptr
 The owner of the cursor. More...
 
int32 Offset = 0
 The chain slot index offset to begin with. More...
 
int32 Limit = TNumericLimits<int32>::Max()
 The maximum number of slots to iterate by. More...
 
int32 SlotIndex = InvalidSlotIndex
 The current local slot index. More...
 
int32 SegmentIndex = InvalidSegmentIndex
 The index of the currently iterated chain segment. More...
 

Detailed Description

template<typename ChunkItT, typename BeltItT, EParadigm InDefaultParadigm>
template<typename ... Ps>
struct TChain< ChunkItT, BeltItT, InDefaultParadigm >::TCursor< Ps >

A state of the chain iterating.

Cursors also unify the component hinting indices across different chunks/belts.

Template Parameters
PsThe predefined types of parts to obtain efficiently while iterating.

Member Typedef Documentation

◆ CursorSuper

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<typename ... Ps>
using TChain< ChunkItT, BeltItT, InDefaultParadigm >::TCursor< Ps >::CursorSuper = FCommonCursor

The base cursor type.

◆ IteratorType

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<typename ... Ps>
typedef TVariant<FEmptyVariantState, ChunkItType, BeltItType> TChain< ChunkItT, BeltItT, InDefaultParadigm >::TCursor< Ps >::IteratorType

The common iterator type.

Constructor & Destructor Documentation

◆ TCursor() [1/5]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<typename ... Ps>
TChain< ChunkItT, BeltItT, InDefaultParadigm >::TCursor< Ps >::TCursor ( const TChain *const  InOwner,
const int32  InOffset = 0,
const int32  InLimit = TNumericLimits<int32>::Max() 
)
inline

Initialize a new cursor instance for a chain.

Parameters
InOwnerThe owner of the cursor to iterate.
InOffsetThe slot offset of the cursor to begin with.
InLimitThe maximum number of slots to iterate by.

◆ TCursor() [2/5]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<typename ... Ps>
TChain< ChunkItT, BeltItT, InDefaultParadigm >::TCursor< Ps >::TCursor ( TCursor< Ps > &&  InCursor)
inline

Move-initialize a cursor.

◆ TCursor() [3/5]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<typename ... Ps>
TChain< ChunkItT, BeltItT, InDefaultParadigm >::TCursor< Ps >::TCursor ( const TCursor< Ps > &  InCursor)
inline

Copy-initialize a cursor.

Parameters
InCursorThe original cursor to copy.

◆ TCursor() [4/5]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<typename ... Ps>
template<typename ... OtherPs>
TChain< ChunkItT, BeltItT, InDefaultParadigm >::TCursor< Ps >::TCursor ( const TCursor< OtherPs... > &  InCursor)
inline

Copy-initialize a cursor from an another cursor type.

Parameters
InCursorThe original cursor to copy.

◆ TCursor() [5/5]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<typename ... Ps>
TChain< ChunkItT, BeltItT, InDefaultParadigm >::TCursor< Ps >::TCursor ( )
inline

Initialize a new invalid cursor.

◆ ~TCursor()

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<typename ... Ps>
TChain< ChunkItT, BeltItT, InDefaultParadigm >::TCursor< Ps >::~TCursor ( )
inline

Finalize the cursor.

Member Function Documentation

◆ Advance()

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<typename ... Ps>
bool TChain< ChunkItT, BeltItT, InDefaultParadigm >::TCursor< Ps >::Advance ( )
inline

Advance the iterator to the next slot.

Returns
Does the next iteration makes sense?

◆ Begin() [1/2]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<typename ... Ps>
bool TChain< ChunkItT, BeltItT, InDefaultParadigm >::TCursor< Ps >::Begin ( )
inline

Begin iterating with the cursor using the current range.

Returns
Does the first iteration makes sense?

◆ Begin() [2/2]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<typename ... Ps>
bool TChain< ChunkItT, BeltItT, InDefaultParadigm >::TCursor< Ps >::Begin ( const int32  InOffset,
const int32  InLimit = TNumericLimits<int32>::Max() 
)
inline

Begin iterating with the cursor using the supplied range.

Parameters
InOffsetThe slot offset to begin iterating with.
InLimitThe maximum number of slots to iterate by.
Returns
Does the first iteration makes sense?

◆ DetailAt()

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<typename ... Ps>
UDetail * TChain< ChunkItT, BeltItT, InDefaultParadigm >::TCursor< Ps >::DetailAt ( const int32  DetailIndex) const
inline

Get a detail at a certain index.

◆ GetDetail() [1/2]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<typename ... Ps>
template<class D >
TResultDetailPtr< D > TChain< ChunkItT, BeltItT, InDefaultParadigm >::TCursor< Ps >::GetDetail ( ) const
inline

Get a detail of a certain class.

Templated version.

Template Parameters
DThe class of detail to get. May be a base class.
Returns
A pointer to the detail of the specified type.
nullptr If there is no such detail within the current iteration.

◆ GetDetail() [2/2]

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

Get a detail of a certain class.

Parameters
DetailClassThe class of detail to get. May be a base class.
Returns
A pointer to the detail of the specified type.
nullptr If there is no such detail within the current iteration.

◆ GetDetailHinted() [1/2]

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

Get a detail of a certain class at an index hinted.

Templated version.

The detail index hint is relative to the parts pack or the detailmark of the filter.

Template Parameters
DThe class of the detail to get.
Parameters
DetailIndexHintThe hinting detail index.

◆ GetDetailHinted() [2/2]

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

Get a detail of a certain class at an index hinted.

The detail index hint is relative to the parts pack or the detailmark of the filter.

Parameters
DetailClassThe class of the detail to get.
DetailIndexHintThe hinting detail index.
Returns
The detail of the specified class.

◆ GetIterableClass()

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<typename ... Ps>
UClass * TChain< ChunkItT, BeltItT, InDefaultParadigm >::TCursor< Ps >::GetIterableClass ( ) const
inline

Get the target sequence class.

◆ GetOwner()

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<typename ... Ps>
const TChain * TChain< ChunkItT, BeltItT, InDefaultParadigm >::TCursor< Ps >::GetOwner ( ) const
inline

Get the owning chain of the cursor.

◆ GetPart()

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<typename ... Ps>
template<typename PartT >
PartT TChain< ChunkItT, BeltItT, InDefaultParadigm >::TCursor< Ps >::GetPart ( ) const
inline

Get a part (trait, detail, subject, other) of the current slot by its type.

Templated version.

If the specified part type is also within the cursor's specified parts list, the method is performed using a fast hinting.

Template Parameters
PartTThe type of the part to get. Can be a value. a reference or a pointer.
Returns
The part of the current slot in the designated type.

◆ GetPartHinted()

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<typename ... Ps>
template<typename PartT >
PartT TChain< ChunkItT, BeltItT, InDefaultParadigm >::TCursor< Ps >::GetPartHinted ( const int32  PartIndexHint) const
inline

Get a part (trait, detail, subject, other) of the current slot by its type with an index hint.

Templated version.

Template Parameters
PartTThe type of the part to get. Can be a value, a reference or a pointer.
Parameters
PartIndexHintA component index hint, corresponding to an index within the locking filter.
Returns
The part of the current slot in the designated type.
See also
GetPart()

◆ GetPartMappingSize()

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<typename ... Ps>
constexpr int32 TChain< ChunkItT, BeltItT, InDefaultParadigm >::TCursor< Ps >::GetPartMappingSize ( ) const
inlineconstexpr

Get the current size of the hinting mapping.

This size is dependent on what is actually used as a mapping basis, i.e. a template pack of parts or a current filter's traitmark/detailmark.

◆ GetSubject()

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<typename ... Ps>
SubjectHandleType TChain< ChunkItT, BeltItT, InDefaultParadigm >::TCursor< Ps >::GetSubject ( ) const
inline

Get the subject of the current iteration.

◆ GetSubjective()

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<typename ... Ps>
SubjectivePtrType TChain< ChunkItT, BeltItT, InDefaultParadigm >::TCursor< Ps >::GetSubjective ( ) const
inline

Get the subjective of the current iteration of the cursor.

Returns
The subjective at the current cursor position.

◆ GetTrait() [1/3]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<typename ... Ps>
template<typename T >
T TChain< ChunkItT, BeltItT, InDefaultParadigm >::TCursor< Ps >::GetTrait ( ) const
inline

Get a trait copy of a certain type.

Template Parameters
TThe type of the trait to get.
Returns
A copy of the trait of the designated type.

◆ GetTrait() [2/3]

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

Get a trait of a certain type.

Templated version.

◆ GetTrait() [3/3]

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

Get a trait of a certain type.

◆ GetTraitHinted() [1/3]

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

Get a copy of a trait of a certain type with an index hint.

The trait index hint is relative to the parts pack or the traitmark of the filter.

◆ GetTraitHinted() [2/3]

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

Get a trait of a certain type with an index hint.

Templated version.

The trait index hint is relative to the parts pack or the traitmark of the filter.

◆ GetTraitHinted() [3/3]

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

Get a trait of a certain type with an index hint.

The trait index hint is relative to the parts pack or the traitmark of the filter.

◆ GetTraitPtr() [1/2]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<typename ... Ps>
template<typename T , EParadigm Paradigm = DefaultParadigm>
std::enable_if< AllowsDirectTraitAccess||(Paradigm<=EParadigm::Unsafe), TResultTraitPtr< T, Paradigm > >::type TChain< ChunkItT, BeltItT, InDefaultParadigm >::TCursor< Ps >::GetTraitPtr ( ) const
inline

Get a trait pointer of a certain type.

Templated version.

Template Parameters
TThe type of the trait to get.
ParadigmThe security paradigm to use.
Returns
A pointer to the trait of the designated type.

◆ GetTraitPtr() [2/2]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<typename ... Ps>
template<EParadigm Paradigm = DefaultParadigm>
std::enable_if< AllowsDirectTraitAccess||(Paradigm<=EParadigm::Unsafe), TResultTraitVoidPtr< Paradigm > >::type TChain< ChunkItT, BeltItT, InDefaultParadigm >::TCursor< Ps >::GetTraitPtr ( UScriptStruct *const  TraitType) const
inline

Get a trait pointer of a certain type at the current cursor position.

Template Parameters
ParadigmThe security paradigm to use.
Returns
A pointer to the trait of the designated type.

◆ GetTraitPtrHinted() [1/2]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<typename ... Ps>
template<typename T , EParadigm Paradigm = DefaultParadigm>
std::enable_if< AllowsDirectTraitAccess||(Paradigm<=EParadigm::Unsafe), TResultTraitPtr< T, Paradigm > >::type TChain< ChunkItT, BeltItT, InDefaultParadigm >::TCursor< Ps >::GetTraitPtrHinted ( const int32  TraitIndexHint) const
inline

Get a pointer to a trait of a certain type with an index hint.

Templated version.

The trait index hint is relative to the parts pack or the traitmark of the filter.

◆ GetTraitPtrHinted() [2/2]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<typename ... Ps>
template<EParadigm Paradigm = DefaultParadigm>
std::enable_if< AllowsDirectTraitAccess||(Paradigm<=EParadigm::Unsafe), TResultTraitVoidPtr< Paradigm > >::type TChain< ChunkItT, BeltItT, InDefaultParadigm >::TCursor< Ps >::GetTraitPtrHinted ( UScriptStruct *const  TraitType,
const int32  TraitIndexHint 
) const
inline

Get a pointer to a trait of a certain type with an index hint.

The trait index hint is relative to the parts pack or the traitmark of the filter.

◆ GetTraitRef()

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<typename ... Ps>
template<typename T , EParadigm Paradigm = DefaultParadigm>
std::enable_if< AllowsDirectTraitAccess||(Paradigm<=EParadigm::Unsafe), TResultTraitRef< T, Paradigm > >::type TChain< ChunkItT, BeltItT, InDefaultParadigm >::TCursor< Ps >::GetTraitRef ( ) const
inline

Get a trait reference of a certain type.

◆ GetTraitRefHinted()

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<typename ... Ps>
template<typename T , EParadigm Paradigm = DefaultParadigm>
std::enable_if< AllowsDirectTraitAccess||(Paradigm<=EParadigm::Unsafe), TResultTraitRef< T, Paradigm > >::type TChain< ChunkItT, BeltItT, InDefaultParadigm >::TCursor< Ps >::GetTraitRefHinted ( const int32  TraitIndexHint) const
inline

Get a trait of a certain type with an index hint.

The trait index hint is relative to the parts pack or the traitmark of the filter.

◆ IndexOfPart()

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<typename ... Ps>
template<class P >
constexpr int32 TChain< ChunkItT, BeltItT, InDefaultParadigm >::TCursor< Ps >::IndexOfPart ( ) const
inlineconstexpr

Find a hinting index for a part.

If there's a template part pack it will be used as a basis for the index. Otherwise, the current filter's traitmark/detailmark will be used instead.

Template Parameters
PThe class of the part to find an index of.
Returns
The index of the part or INDEX_NONE, if it was not found for hinting.

◆ IsViable()

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<typename ... Ps>
bool TChain< ChunkItT, BeltItT, InDefaultParadigm >::TCursor< Ps >::IsViable ( ) const
inline

Check if the cursor is viable and has not finished the iterating.

Returns
The state of examination.

◆ operator bool()

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<typename ... Ps>
TChain< ChunkItT, BeltItT, InDefaultParadigm >::TCursor< Ps >::operator bool ( ) const
inline

Check if the cursor is viable.

◆ operator=() [1/2]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<typename ... Ps>
TCursor & TChain< ChunkItT, BeltItT, InDefaultParadigm >::TCursor< Ps >::operator= ( const TCursor< Ps > &  InCursor)
inline

Copy a cursor.

◆ operator=() [2/2]

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<typename ... Ps>
TCursor & TChain< ChunkItT, BeltItT, InDefaultParadigm >::TCursor< Ps >::operator= ( TCursor< Ps > &&  InCursor)
inline

Move a cursor.

◆ Provide()

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<typename ... Ps>
bool TChain< ChunkItT, BeltItT, InDefaultParadigm >::TCursor< Ps >::Provide ( )
inline

Begin or advance iterating the chain using this cursor.

Returns
Is the iteration possible? Returns false if the iterating should be ended.

◆ RemapPartIndex()

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<typename ... Ps>
template<EParadigm RemappingParadigm = EParadigm::Safe>
int32 TChain< ChunkItT, BeltItT, InDefaultParadigm >::TCursor< Ps >::RemapPartIndex ( const int32  PartIndex) const
inline

Remap a part index hint using the current mapping.

◆ Reset()

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<typename ... Ps>
void TChain< ChunkItT, BeltItT, InDefaultParadigm >::TCursor< Ps >::Reset ( )
inline

Detach the cursor from the chain making it an invalid one.

The cursor will also release its owning chain as/if needed.

Friends And Related Function Documentation

◆ TCursor

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<typename ... Ps>
template<typename ... OtherPs>
friend struct TCursor
friend

Member Data Documentation

◆ BeltItIndex

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<typename ... Ps>
constexpr SIZE_T TChain< ChunkItT, BeltItT, InDefaultParadigm >::TCursor< Ps >::BeltItIndex = IteratorType::template IndexOfType<BeltItType>()
staticconstexpr

The index of the belt iterator within the variant type.

◆ ChunkItIndex

template<typename ChunkItT , typename BeltItT , EParadigm InDefaultParadigm>
template<typename ... Ps>
constexpr SIZE_T TChain< ChunkItT, BeltItT, InDefaultParadigm >::TCursor< Ps >::ChunkItIndex = IteratorType::template IndexOfType<ChunkItType>()
staticconstexpr

The index of the chunk iterator within the variant type.


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