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
FFilter Struct Reference

A subject filtering specification. More...

#include <Filter.h>

Inheritance diagram for FFilter:
Inheritance graph
[legend]
Collaboration diagram for FFilter:
Collaboration graph
[legend]

Public Types

typedef FFingerprint::TraitsType TraitsType
 The type of traits array.
 
typedef FFingerprint::DetailsType DetailsType
 The type of details array.
 

Public Member Functions

const FTraitmarkGetTraitmark () const
 Get the inclusive traitmark of the filter.
 
const FDetailmarkGetDetailmark () const
 Get the inclusive detailmark of the filter.
 
const FFingerprintGetFingerprint () const
 Get the inclusive fingerprint of the filter.
 
const TraitsTypeGetTraits () const
 Get the included traits of the filter.
 
const DetailsTypeGetDetails () const
 Get the included details of the filter.
 
const TraitsTypeGetExcludedTraits () const
 Get the excluded traits of the filter.
 
const DetailsTypeGetExcludedDetails () const
 Get the excluded details of the filter.
 
EFlagmark GetExcludingFlagmark () const
 Get the current negative flagmark of the filter.
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > SetExcludingFlagmark (EFlagmark InExcludingFlagmark)
 Set the new active negative flagmark.
 
int32 TraitsNum () const
 The number of included traits in the filter.
 
int32 DetailsNum () const
 The number of included details in the filter.
 
int32 ExcludedTraitsNum () const
 The number of excluded traits in the filter.
 
int32 ExcludedDetailsNum () const
 The number of excluded details in the filter.
 
bool IsTraitWise () const
 Check if there is some kind of trait-wise filtering.
 
bool IsDetailWise () const
 Check if there is some kind of detail-wise filtering.
 
bool IsBeltBased () const
 Check if the filter requires a belt-wise iterating process.
 
const FBitMaskGetTraitsMask () const
 Get the included traits mask of the filter.
 
const FBitMaskGetDetailsMask () const
 Get the included details mask of the filter.
 
const FBitMaskGetExcludedTraitsMask () const
 Get the excluded traits mask of the filter.
 
const FBitMaskGetExcludedDetailsMask () const
 Get the excluded details mask of the filter.
 
UScriptStruct * TraitAt (const int32 Index) const
 Get an included trait by its index.
 
TSubclassOf< UDetailDetailAt (const int32 Index) const
 Get an included detail by its index.
 
UScriptStruct * ExcludedTraitAt (const int32 Index) const
 Get an excluded trait by its index.
 
TSubclassOf< UDetailExcludedDetailAt (const int32 Index) const
 Get an excluded detail by its index.
 
int32 IndexOf (UScriptStruct *const TraitType) const
 Find the index of a specific trait type.
 
int32 IndexOf (const TSubclassOf< UDetail > DetailClass) const
 Find the index of a specific detail class.
 
template<typename AllocatorT >
EApparatusStatus IndicesOf (const TSubclassOf< UDetail > DetailClass, TArray< int32, AllocatorT > &OutIndices) const
 Find the indices of a specific detail class.
 
void Set (FFilter &&Filter)
 Move a filter to this one.
 
void Set (const FFilter &Filter)
 Set a filter equal to another filter.
 
template<typename AllocatorT >
void Set (const TArray< UScriptStruct *, AllocatorT > &TraitTypes)
 Set a filter to an array of trait types.
 
template<typename AllocatorT >
void Set (const TArray< TSubclassOf< UDetail >, AllocatorT > &DetailClasses)
 Set a filter to an array of detail classes.
 
template<typename AllocatorT >
void Set (const TArray< UDetail *, AllocatorT > &Details)
 Set a filter to an array of details.
 
FFilteroperator= (const FFilter &Filter)
 Set a filter equal to another filter.
 
FFilteroperator= (FFilter &&Filter)
 Move a filter to this one.
 
template<typename AllocatorT >
FFilteroperator= (const TArray< UScriptStruct *, AllocatorT > &TraitTypes)
 Set a filter to an array of trait types.
 
template<typename AllocatorT >
FFilteroperator= (const TArray< TSubclassOf< UDetail >, AllocatorT > &DetailClasses)
 Set the filter equal to an array of detail classes.
 
template<typename AllocatorT >
FFilteroperator= (const TArray< UDetail *, AllocatorT > &InDetails)
 Set the filter equal to an array of active details.
 
bool operator== (const FFilter &Other) const
 Compare filters for equality.
 
bool operator!= (const FFilter &Other) const
 Compare filters for inequality.
 
bool Identical (const FFilter *Other, uint32 PortFlags) const
 Compare two filters for equality.
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > Reset (const EFlagmark InFlagmark=DefaultFlagmark, const EFlagmark InExcludingFlagmark=DefaultExcludingFlagmark)
 Clear the fingerprint without any deallocations.
 
bool Matches (const FFilter &Filter) const
 Check if the filter matches an another filter.
 
FString ToString () const
 Convert the filter to a string representation.
 
uint32 CalcHash () const
 Calculate the hash sum of the filter.
 
void PostSerialize (const FArchive &Archive)
 Post-serialize the filter updating its caches.
 
Flagmarking
EFlagmark GetFlagmark (const std::memory_order MemoryOrder=std::memory_order_relaxed) const
 Get the current positive flagmark of the filter.
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > SetFlagmark (const EFlagmark InFlagmark, const std::memory_order MemoryOrder=std::memory_order_relaxed)
 Set the new positive, including flagmark.
 
Inclusion
template<EParadigm Paradigm = EParadigm::Default>
auto IncludeFlag (const EFlagmarkBit InBit)
 Add a flag as an including one.
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm, FFilter & > IncludeFlagmark (const EFlagmark InFlagmark)
 Add a flagmark as an including one.
 
template<EParadigm Paradigm = EParadigm::Default, typename AllocatorT = FDefaultAllocator>
TOutcome< Paradigm, FFilter & > Include (const TArray< UScriptStruct *, AllocatorT > &TraitTypes)
 Add an array of trait types as inclusions.
 
template<EParadigm Paradigm = EParadigm::Default, typename AllocatorT = FDefaultAllocator>
TOutcome< Paradigm, FFilter & > Include (const TArray< TSubclassOf< UDetail >, AllocatorT > &DetailClasses)
 Add an arrary of detail classes as inclusions.
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm, FFilter & > Include (std::initializer_list< UScriptStruct * > InTraitTypes)
 Add a variadic list of trait types as inclusions.
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm, FFilter & > Include (std::initializer_list< TSubclassOf< UDetail > > InDetailClasses)
 Add a variadic list of detail classes as inclusions.
 
template<EParadigm Paradigm = EParadigm::Default, typename AllocatorT = FDefaultAllocator>
TOutcome< Paradigm, FFilter & > Include (const TArray< UDetail *, AllocatorT > &InDetails)
 Add an array of active details as inclusions.
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm, FFilter & > Include (const FFingerprint &InFingerprint)
 Include a fingerprint within the filter.
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm, FFilter & > Include (UScriptStruct *const TraitType)
 Add a trait type.
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm, FFilter & > Include (const TSubclassOf< UDetail > DetailClass)
 Add a detail class.
 
template<EParadigm Paradigm, typename T >
TOutcome< Paradigm, FFilter & > IncludeTrait ()
 Include a trait type within the filter.
 
template<typename T >
auto IncludeTrait ()
 Include a trait type within the filter.
 
template<EParadigm Paradigm, class D >
TOutcome< Paradigm, FFilter & > IncludeDetail ()
 Include a detail class within the filter.
 
template<class D >
auto IncludeDetail ()
 Include a detail class within the filter.
 
template<EParadigm Paradigm, class... Cs>
TOutcome< Paradigm, FFilter & > Include ()
 Include component(s) within a filter.
 
template<class... Cs>
auto Include ()
 Include component(s) within a filter.
 
template<EParadigm Paradigm, class... Cs>
TOutcome< Paradigm, FFilter & > Include (const EFlagmarkBit Flag)
 Include component(s) alongside a flag within the filter.
 
template<class... Cs>
auto Include (const EFlagmarkBit Flag)
 Include component(s) alongside a flag within the filter.
 
template<EParadigm Paradigm, class... Cs>
TOutcome< Paradigm, FFilter & > Include (const EFlagmark Flagmark)
 Include component(s) alongside a flagmark within the filter.
 
template<class... Cs>
auto Include (const EFlagmark Flagmark)
 Include component(s) alongside a flagmark within the filter.
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > RemoveInclusion (const EFlagmark InFlagmark)
 Remove a flagmark inclusion from the filter specification.
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > RemoveInclusion (UScriptStruct *const TraitType)
 Remove a trait type from the filter specification.
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > RemoveInclusion (const TSubclassOf< UDetail > DetailClass)
 Remove a detail class from the filter specification.
 
template<EParadigm Paradigm, typename T >
TOutcome< Paradigm > RemoveTraitInclusion ()
 Remove an included trait from the filter.
 
template<typename T >
auto RemoveTraitInclusion ()
 Remove an included trait from the filter.
 
template<EParadigm Paradigm, class D >
TOutcome< Paradigm > RemoveDetailInclusion ()
 Remove an included detail from the filter.
 
template<class D >
auto RemoveDetailInclusion ()
 Remove an included detail from the filter.
 
template<EParadigm Paradigm, class... Cs>
TOutcome< Paradigm > RemoveInclusion ()
 Remove the component(s) from the filter.
 
template<class... Cs>
auto RemoveInclusion ()
 Remove the component(s) from the filter.
 
FFilteroperator+= (std::initializer_list< UScriptStruct * > InTraitTypes)
 Include variadic trait types.
 
FFilteroperator+= (std::initializer_list< TSubclassOf< UDetail > > InDetailClasses)
 Include variadic detail classes.
 
FFilteroperator+= (const FFingerprint &InFingerprint)
 Include a fingerprint within the filter.
 
template<typename AllocatorT >
FFilteroperator+= (const TArray< UScriptStruct *, AllocatorT > &InTraitTypes)
 Add an array of trait types.
 
template<typename AllocatorT >
FFilteroperator+= (const TArray< TSubclassOf< UDetail >, AllocatorT > &InDetailClasses)
 Add an array of detail classes.
 
template<typename AllocatorT >
FFilteroperator+= (const TArray< UDetail *, AllocatorT > &InDetails)
 Add active details from an array.
 
FFilteroperator+= (UScriptStruct *const TraitType)
 Add a single trait type to the list of included traits.
 
FFilteroperator+= (const TSubclassOf< UDetail > DetailClass)
 Add a single detail class of included details.
 
Exclusion
FFilterExclude (const EFlagmarkBit InBit, EApparatusStatus &OutStatus)
 Add a flag as an excluding one.
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm, FFilter & > ExcludeFlag (const EFlagmarkBit InBit)
 Add a flag as an excluding one.
 
FFilterExclude (const EFlagmark InExcludingFlagmark, EApparatusStatus &OutStatus)
 Add a flagmark as an excluding one.
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm, FFilter & > ExcludeFlagmark (const EFlagmark InExcludingFlagmark)
 Add a flagmark as an excluding one.
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm, FFilter & > Exclude (UScriptStruct *const InExcludedTraitType)
 Exclude a trait type from being matched.
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm, FFilter & > Exclude (const TSubclassOf< UDetail > InExcludedDetailClass)
 Exclude a detail class from being matched.
 
template<EParadigm Paradigm, typename T >
TOutcome< Paradigm, FFilter & > ExcludeTrait ()
 Exclude a trait type from being matched.
 
template<typename T >
auto ExcludeTrait ()
 Exclude a trait type from being matched.
 
template<EParadigm Paradigm, class D >
TOutcome< Paradigm, FFilter & > ExcludeDetail ()
 Exclude a detail class from filtering.
 
template<class D >
auto ExcludeDetail ()
 Exclude a detail class from filtering.
 
template<class... Cs>
FFilterExclude (EApparatusStatus &OutStatus)
 Exclude component(s) within the filter.
 
template<EParadigm Paradigm, class... Cs>
TOutcome< Paradigm, FFilter & > Exclude ()
 Exclude component(s) within the filter.
 
template<class... Cs, EParadigm Paradigm = EParadigm::Default>
auto Exclude ()
 Exclude component(s) and a flagmark within the filter.
 
template<class... Cs>
FFilterExclude (const EFlagmark InExcludingFlagmark, EApparatusStatus &OutStatus)
 Exclude component(s) and a flagmark within the filter.
 
template<EParadigm Paradigm, class... Cs>
TOutcome< Paradigm, FFilter & > Exclude (const EFlagmark InExcludingFlagmark)
 Exclude component(s) and a flagmark within the filter.
 
template<class... Cs, EParadigm Paradigm = EParadigm::Default>
auto Exclude (const EFlagmark InExcludingFlagmark)
 Exclude component(s) and a flagmark within the filter.
 
template<class... Cs>
FFilterExclude (const EFlagmarkBit InExcludedFlagmarkBit, EApparatusStatus &OutStatus)
 Exclude component(s) and a flagmark bit within the filter.
 
template<EParadigm Paradigm, class... Cs>
TOutcome< Paradigm, FFilter & > Exclude (const EFlagmarkBit InExcludedFlagmarkBit)
 Exclude component(s) and a flagmark bit within the filter.
 
template<class... Cs, EParadigm Paradigm = EParadigm::Default>
auto Exclude (const EFlagmarkBit InExcludedFlagmarkBit)
 Exclude component(s) and a flagmark bit within the filter.
 
template<EParadigm Paradigm = EParadigm::Default, typename AllocatorT = FDefaultAllocator>
TOutcome< Paradigm, FFilter & > Exclude (const TArray< UScriptStruct *, AllocatorT > &InExcludedTraitTypes)
 Add an array of traits exclusions to the filter.
 
template<EParadigm Paradigm = EParadigm::Default, typename AllocatorT = FDefaultAllocator>
TOutcome< Paradigm, FFilter & > ExcludeTraits (const TArray< UScriptStruct *, AllocatorT > &InExcludedTraitTypes)
 Add an array of traits exclusions to the filter.
 
template<EParadigm Paradigm = EParadigm::Default, typename AllocatorT >
TOutcome< Paradigm, FFilter & > Exclude (const TArray< TSubclassOf< UDetail >, AllocatorT > &InExcludedDetailClasses)
 Add an array of details exclusions to the filter.
 
template<EParadigm Paradigm = EParadigm::Default, typename AllocatorT >
TOutcome< Paradigm, FFilter & > ExcludeDetails (const TArray< TSubclassOf< UDetail >, AllocatorT > &InExcludedDetailClasses)
 Add an array of details exclusions to the filter.
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > RemoveExclusion (const EFlagmark InFlagmark)
 Remove an excluding flagmark from the filter specification.
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > RemoveExclusion (UScriptStruct *const TraitType)
 Remove an excluding trait type from the filter specification.
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > RemoveExclusion (const TSubclassOf< UDetail > DetailClass)
 Remove an excluding detail class from the filter specification.
 
template<EParadigm Paradigm, typename T >
TOutcome< Paradigm > RemoveTraitExclusion ()
 Remove an excluded trait from the filter.
 
template<typename T >
auto RemoveTraitExclusion ()
 Remove an excluded trait from the filter.
 
template<EParadigm Paradigm, class D >
TOutcome< Paradigm > RemoveDetailExclusion ()
 Remove an excluded detail from the filter.
 
template<class D >
auto RemoveDetailExclusion ()
 Remove an excluded detail from the filter.
 
template<EParadigm Paradigm, class... Cs>
TOutcome< Paradigm > RemoveExclusion ()
 Remove the excluding component(s) from the filter.
 
template<class... Cs>
auto RemoveExclusion ()
 Remove the excluding component(s) from the filter.
 
Examination
bool Includes (const EFlagmarkBit InBit) const
 Check whether a filter includes a certain flag.
 
bool Includes (const EFlagmark InFlagmark) const
 Check whether a filter includes all of the passed in flagmark flags.
 
bool Includes (UScriptStruct *const TraitType) const
 Check whether a filter contains a trait specification.
 
bool Includes (const TSubclassOf< UDetail > DetailClass) const
 Check whether a filter contains a detail specification.
 
template<typename T >
bool IncludesTrait () const
 Check whether a filter contains a trait specification.
 
template<class D >
bool IncludesDetail () const
 Check whether a filter contains a detail specification.
 
template<class... Cs>
bool Includes () const
 Check if the filter includes all of the passed in components.
 
bool Excludes (const EFlagmarkBit InBit) const
 Check whether a filter excludes a flag.
 
bool Excludes (const EFlagmark InFlagmark) const
 Check whether a filter excludes all of the flagmark bits passed in.
 
bool Excludes (UScriptStruct *const TraitType) const
 Check if the filter excludes a specific trait type.
 
bool Excludes (const TSubclassOf< UDetail > DetailClass) const
 Check if the filter excludes a specific detail class.
 
template<typename T >
bool ExcludesTrait () const
 Check if the filter excludes a specific trait type.
 
template<class D >
bool ExcludesDetail () const
 Check if the filter excludes a specific detail class.
 
template<class... Cs>
bool Excludes () const
 Check if the filter excludes all of the passed in components.
 
bool HasConflicts () const
 Check if there are any conflicts in the filter.
 

Static Public Attributes

static constexpr EFlagmark DefaultFlagmark = FM_Booted
 The default flagmark used in a filter.
 
static constexpr EFlagmark DefaultExcludingFlagmark = FM_Stale
 The default excluding flagmark used in a filter.
 
static const FFilter Zero
 An empty filter specification.
 
static const FFilter Default
 A default filter specification.
 

Friends

template<class ... Cs>
struct TFilter
 
class UBelt
 
class UMachine
 
class UApparatusFunctionLibrary
 
uint32 GetTypeHash (const FFilter &Filter)
 Get the hash of a filter.
 

Initialization

 FFilter (const EBootFilter InBootFilter)
 Construct a new filter with a boot filter.
 
 FFilter (const EFlagmark InFlagmark=DefaultFlagmark, const EFlagmark InExcludingFlagmark=DefaultExcludingFlagmark)
 Construct a new filter with optional flagmark specifications.
 
 FFilter (const EFlagmarkBit InFlagmarkBit)
 Construct a new filter with a flagmark bit set.
 
 FFilter (const EFlagmarkBit InFlagmarkBit, const EFlagmarkBit InExcludingFlagmarkBit)
 Construct a new filter with a flagmark bit set.
 
 FFilter (FFingerprint &&InFingerprint)
 Construct a new filter while moving a fingerprint.
 
 FFilter (const FFingerprint &InFingerprint)
 Construct a new filter based on a fingerprint.
 
 FFilter (UScriptStruct *const InTraitType, const EFlagmark InFlagmark=DefaultFlagmark)
 Construct a new filter from a single trait type and an optional boot filter.
 
 FFilter (const TSubclassOf< UDetail > InDetailClass, const EFlagmark InFlagmark=DefaultFlagmark)
 Construct a new filter from a single detail class and an optional boot filter.
 
template<typename AllocatorT >
 FFilter (const TArray< TSubclassOf< UDetail >, AllocatorT > &InDetailClasses, const EFlagmark InFlagmark=DefaultFlagmark)
 Construct a filter from an array of types.
 
template<typename AllocatorT >
 FFilter (const TArray< UDetail *, AllocatorT > &InDetailClasses, const EFlagmark InFlagmark=DefaultFlagmark)
 Construct a filter from an array of details.
 
template<typename AllocatorT >
 FFilter (const TArray< TSubclassOf< UDetail >, AllocatorT > &InDetailClasses, const TArray< TSubclassOf< UDetail >, AllocatorT > &InExcludedDetailClasses, const EFlagmark InFlagmark=DefaultFlagmark, const EFlagmark InExcludingFlagmark=DefaultExcludingFlagmark)
 Construct a filter from an array of types and excluded types.
 
template<typename AllocatorT >
 FFilter (const TArray< UScriptStruct *, AllocatorT > &InTraitTypes, const TArray< TSubclassOf< UDetail >, AllocatorT > &InDetailClasses, const EFlagmark InFlagmark=DefaultFlagmark, const EFlagmark InExcludingFlagmark=DefaultExcludingFlagmark)
 Construct a filter from arrays of traits and details.
 
 FFilter (std::initializer_list< UScriptStruct * > InTraitTypes, std::initializer_list< TSubclassOf< UDetail > > InDetailClasses, const EFlagmark InFlagmark=DefaultFlagmark)
 Construct a filter from initializer lists of traits and details.
 
template<typename AllocatorT >
 FFilter (const TArray< UScriptStruct *, AllocatorT > &InTraitTypes, const TArray< TSubclassOf< UDetail >, AllocatorT > &InDetailClasses, const TArray< TSubclassOf< UDetail >, AllocatorT > &InExcludedDetailClasses, const EFlagmark InFlagmark=DefaultFlagmark, const EFlagmark InExcludingFlagmark=DefaultExcludingFlagmark)
 Construct a filter from arrays of details and traits and exclusions.
 
template<typename AllocatorT >
 FFilter (const TArray< UScriptStruct *, AllocatorT > &InTraitTypes, const TArray< TSubclassOf< UDetail >, AllocatorT > &InDetailClasses, const TArray< UScriptStruct *, AllocatorT > &InExcludedTraitTypes, const TArray< TSubclassOf< UDetail >, AllocatorT > &InExcludedDetailClasses, const EFlagmark InFlagmark=DefaultFlagmark, const EFlagmark InExcludingFlagmark=DefaultExcludingFlagmark)
 Construct a filter from arrays of details and traits and exclusions.
 
 FFilter (FFilter &&InFilter)
 Moves an existing filter.
 
 FFilter (const FFilter &InFilter)
 Initializes the filter as a copy of another one.
 
template<typename ... Cs>
 FFilter (const TFilter< Cs... > &InFilter)
 Convert from a generic filter.
 
template<typename ... Ts>
static FFilter Make (const EFlagmark InFlagmark=DefaultFlagmark, const EFlagmark InExcludingFlagmark=DefaultExcludingFlagmark)
 Make a new filter with a list of components.
 
template<typename... Ts>
static FFilter Make (const EFlagmarkBit InFlagmarkBit)
 Make a new filter with a list of components.
 
template<typename... Ts>
static FFilter Make (const EFlagmarkBit InFlagmarkBit, const EFlagmarkBit InExcludingFlagmarkBit)
 Make a new filter with a list of components.
 

Detailed Description

A subject filtering specification.

Example:

FFilter Filter = FFilter::Make<FHealth, FArmor>();
A subject filtering specification.
Definition: Filter.h:83

Member Typedef Documentation

◆ DetailsType

The type of details array.

◆ TraitsType

The type of traits array.

Constructor & Destructor Documentation

◆ FFilter() [1/18]

FFilter::FFilter ( const EBootFilter  InBootFilter)
inline

Construct a new filter with a boot filter.

Deprecated.

The method is deprecated as of 1.10. Do not use it, please.

See also
FFilter(EFlagmar, EFlagmark)

◆ FFilter() [2/18]

FFilter::FFilter ( const EFlagmark  InFlagmark = DefaultFlagmark,
const EFlagmark  InExcludingFlagmark = DefaultExcludingFlagmark 
)
inline

Construct a new filter with optional flagmark specifications.

◆ FFilter() [3/18]

FFilter::FFilter ( const EFlagmarkBit  InFlagmarkBit)
inline

Construct a new filter with a flagmark bit set.

Parameters
InFlagmarkBitThe flagmark bit to set.

◆ FFilter() [4/18]

FFilter::FFilter ( const EFlagmarkBit  InFlagmarkBit,
const EFlagmarkBit  InExcludingFlagmarkBit 
)
inline

Construct a new filter with a flagmark bit set.

Parameters
InFlagmarkBitThe flagmark bit to set.
InExcludingFlagmarkBitThe flagmark bit to use as an excluding one.

◆ FFilter() [5/18]

FFilter::FFilter ( FFingerprint &&  InFingerprint)
inline

Construct a new filter while moving a fingerprint.

◆ FFilter() [6/18]

FFilter::FFilter ( const FFingerprint InFingerprint)
inline

Construct a new filter based on a fingerprint.

◆ FFilter() [7/18]

FFilter::FFilter ( UScriptStruct *const  InTraitType,
const EFlagmark  InFlagmark = DefaultFlagmark 
)
inline

Construct a new filter from a single trait type and an optional boot filter.

◆ FFilter() [8/18]

FFilter::FFilter ( const TSubclassOf< UDetail InDetailClass,
const EFlagmark  InFlagmark = DefaultFlagmark 
)
inline

Construct a new filter from a single detail class and an optional boot filter.

◆ FFilter() [9/18]

template<typename AllocatorT >
FFilter::FFilter ( const TArray< TSubclassOf< UDetail >, AllocatorT > &  InDetailClasses,
const EFlagmark  InFlagmark = DefaultFlagmark 
)
inline

Construct a filter from an array of types.

◆ FFilter() [10/18]

template<typename AllocatorT >
FFilter::FFilter ( const TArray< UDetail *, AllocatorT > &  InDetailClasses,
const EFlagmark  InFlagmark = DefaultFlagmark 
)
inline

Construct a filter from an array of details.

◆ FFilter() [11/18]

template<typename AllocatorT >
FFilter::FFilter ( const TArray< TSubclassOf< UDetail >, AllocatorT > &  InDetailClasses,
const TArray< TSubclassOf< UDetail >, AllocatorT > &  InExcludedDetailClasses,
const EFlagmark  InFlagmark = DefaultFlagmark,
const EFlagmark  InExcludingFlagmark = DefaultExcludingFlagmark 
)
inline

Construct a filter from an array of types and excluded types.

◆ FFilter() [12/18]

template<typename AllocatorT >
FFilter::FFilter ( const TArray< UScriptStruct *, AllocatorT > &  InTraitTypes,
const TArray< TSubclassOf< UDetail >, AllocatorT > &  InDetailClasses,
const EFlagmark  InFlagmark = DefaultFlagmark,
const EFlagmark  InExcludingFlagmark = DefaultExcludingFlagmark 
)
inline

Construct a filter from arrays of traits and details.

◆ FFilter() [13/18]

FFilter::FFilter ( std::initializer_list< UScriptStruct * >  InTraitTypes,
std::initializer_list< TSubclassOf< UDetail > >  InDetailClasses,
const EFlagmark  InFlagmark = DefaultFlagmark 
)
inline

Construct a filter from initializer lists of traits and details.

◆ FFilter() [14/18]

template<typename AllocatorT >
FFilter::FFilter ( const TArray< UScriptStruct *, AllocatorT > &  InTraitTypes,
const TArray< TSubclassOf< UDetail >, AllocatorT > &  InDetailClasses,
const TArray< TSubclassOf< UDetail >, AllocatorT > &  InExcludedDetailClasses,
const EFlagmark  InFlagmark = DefaultFlagmark,
const EFlagmark  InExcludingFlagmark = DefaultExcludingFlagmark 
)
inline

Construct a filter from arrays of details and traits and exclusions.

◆ FFilter() [15/18]

template<typename AllocatorT >
FFilter::FFilter ( const TArray< UScriptStruct *, AllocatorT > &  InTraitTypes,
const TArray< TSubclassOf< UDetail >, AllocatorT > &  InDetailClasses,
const TArray< UScriptStruct *, AllocatorT > &  InExcludedTraitTypes,
const TArray< TSubclassOf< UDetail >, AllocatorT > &  InExcludedDetailClasses,
const EFlagmark  InFlagmark = DefaultFlagmark,
const EFlagmark  InExcludingFlagmark = DefaultExcludingFlagmark 
)
inline

Construct a filter from arrays of details and traits and exclusions.

◆ FFilter() [16/18]

FFilter::FFilter ( FFilter &&  InFilter)
inline

Moves an existing filter.

◆ FFilter() [17/18]

FFilter::FFilter ( const FFilter InFilter)
inline

Initializes the filter as a copy of another one.

◆ FFilter() [18/18]

template<typename ... Cs>
FFilter::FFilter ( const TFilter< Cs... > &  InFilter)
inline

Convert from a generic filter.

Template Parameters
CsThe components of the filter.

Member Function Documentation

◆ CalcHash()

uint32 FFilter::CalcHash ( ) const
inline

Calculate the hash sum of the filter.

The sum is actually cached internally, for a faster calculation time. This is in turn needed for faster iterables lookup.

Returns
The hashing sum of the filter.

◆ DetailAt()

TSubclassOf< UDetail > FFilter::DetailAt ( const int32  Index) const
inline

Get an included detail by its index.

◆ DetailsNum()

int32 FFilter::DetailsNum ( ) const
inline

The number of included details in the filter.

◆ Exclude() [1/15]

template<EParadigm Paradigm, class... Cs>
TOutcome< Paradigm, FFilter & > FFilter::Exclude ( )
inline

Exclude component(s) within the filter.

Templated paradigm version.

Template Parameters
ParadigmThe paradigm to work under.
CsThe components to exclude. May be both traits and details.
Returns
Returns itself to be used in a one-liner.

◆ Exclude() [2/15]

template<class... Cs, EParadigm Paradigm = EParadigm::Default>
auto FFilter::Exclude ( )
inline

Exclude component(s) and a flagmark within the filter.

Templated default paradigm version.

Template Parameters
CsThe components to exclude. May be both traits and details.
ParadigmThe paradigm to work under.
Returns
Returns itself to be used in a one-liner.

◆ Exclude() [3/15]

template<EParadigm Paradigm, class... Cs>
TOutcome< Paradigm, FFilter & > FFilter::Exclude ( const EFlagmark  InExcludingFlagmark)
inline

Exclude component(s) and a flagmark within the filter.

Templated paradigm version.

Template Parameters
ParadigmThe paradigm to work under.
CsThe components to exclude. May be both traits and details.
Parameters
InExcludingFlagmarkThe flagmark to exclude.
Returns
Returns itself to be used in a one-liner.

◆ Exclude() [4/15]

template<class... Cs, EParadigm Paradigm = EParadigm::Default>
auto FFilter::Exclude ( const EFlagmark  InExcludingFlagmark)
inline

Exclude component(s) and a flagmark within the filter.

Templated default paradigm version.

Template Parameters
CsThe components to exclude. May be both traits and details.
ParadigmThe paradigm to work under.
Parameters
InExcludingFlagmarkThe flagmark to exclude.
Returns
Returns itself to be used in a one-liner.

◆ Exclude() [5/15]

FFilter & FFilter::Exclude ( const EFlagmark  InExcludingFlagmark,
EApparatusStatus OutStatus 
)
inline

Add a flagmark as an excluding one.

Status version.

Removes the flagmark from the positive one accordingly.

Parameters
InExcludingFlagmarkThe flagmark to exclude.
OutStatusThe status of the operation.
Returns
Returns itself to be used in a one-liner.

◆ Exclude() [6/15]

template<class... Cs>
FFilter & FFilter::Exclude ( const EFlagmark  InExcludingFlagmark,
EApparatusStatus OutStatus 
)
inline

Exclude component(s) and a flagmark within the filter.

Templated status version.

Template Parameters
CsThe components to exclude. May be both traits and details.
Parameters
InExcludingFlagmarkThe flagmark to exclude.
OutStatusThe status of the operation.
Returns
Returns itself to be used in a one-liner.

◆ Exclude() [7/15]

FFilter & FFilter::Exclude ( const EFlagmarkBit  InBit,
EApparatusStatus OutStatus 
)
inline

Add a flag as an excluding one.

Status version.

Removes the flag from the positive flagmark accordingly.

Parameters
[in]InBitThe bit to exclude.
[out]OutStatusThe status of the operation.
Returns
Returns itself to be used in a one-liner.

◆ Exclude() [8/15]

template<EParadigm Paradigm, class... Cs>
TOutcome< Paradigm, FFilter & > FFilter::Exclude ( const EFlagmarkBit  InExcludedFlagmarkBit)
inline

Exclude component(s) and a flagmark bit within the filter.

Templated paradigm version.

Template Parameters
ParadigmThe paradigm to work under.
CsThe components to exclude. May be both traits and details.
Parameters
InExcludedFlagmarkBitThe flagmark bit to exclude.
Returns
Returns itself to be used in a one-liner.

◆ Exclude() [9/15]

template<class... Cs, EParadigm Paradigm = EParadigm::Default>
auto FFilter::Exclude ( const EFlagmarkBit  InExcludedFlagmarkBit)
inline

Exclude component(s) and a flagmark bit within the filter.

Templated version.

Template Parameters
CsThe components to exclude. May be both traits and details.
Parameters
InExcludedFlagmarkBitThe flagmark bit to exclude.
Returns
Returns itself to be used in a one-liner.

◆ Exclude() [10/15]

template<class... Cs>
FFilter & FFilter::Exclude ( const EFlagmarkBit  InExcludedFlagmarkBit,
EApparatusStatus OutStatus 
)
inline

Exclude component(s) and a flagmark bit within the filter.

Templated status version.

Template Parameters
CsThe components to exclude. May be both traits and details.
Parameters
InExcludedFlagmarkBitThe flagmark bit to exclude.
OutStatusThe status of the operation.
Returns
Returns itself to be used in a one-liner.

◆ Exclude() [11/15]

template<EParadigm Paradigm = EParadigm::Default, typename AllocatorT >
TOutcome< Paradigm, FFilter & > FFilter::Exclude ( const TArray< TSubclassOf< UDetail >, AllocatorT > &  InExcludedDetailClasses)
inline

Add an array of details exclusions to the filter.

Template Parameters
ParadigmThe paradigm to work under.
AllocatorTThe type of the allocator of the details array.
Parameters
InExcludedDetailClassesThe details to exclude.
Returns
The outcome of the operation.

◆ Exclude() [12/15]

template<EParadigm Paradigm = EParadigm::Default, typename AllocatorT = FDefaultAllocator>
TOutcome< Paradigm, FFilter & > FFilter::Exclude ( const TArray< UScriptStruct *, AllocatorT > &  InExcludedTraitTypes)
inline

Add an array of traits exclusions to the filter.

Template Parameters
ParadigmThe paradigm to work under.
AllocatorTThe type of the allocator of the traits array.
Parameters
InExcludedTraitTypesThe traits to exclude.
Returns
The outcome of the operation.

◆ Exclude() [13/15]

template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm, FFilter & > FFilter::Exclude ( const TSubclassOf< UDetail InExcludedDetailClass)
inline

Exclude a detail class from being matched.

Template Parameters
ParadigmThe paradigm to work under.
Parameters
InExcludedDetailClassThe detail class to exclude.
Returns
The outcome of the operation.

◆ Exclude() [14/15]

template<class... Cs>
FFilter & FFilter::Exclude ( EApparatusStatus OutStatus)
inline

Exclude component(s) within the filter.

Templated status version.

Template Parameters
CsThe components to exclude. May be both traits and details.
Parameters
OutStatusThe status of the operation.
Returns
Returns itself to be used in a one-liner.

◆ Exclude() [15/15]

template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm, FFilter & > FFilter::Exclude ( UScriptStruct *const  InExcludedTraitType)
inline

Exclude a trait type from being matched.

Template Parameters
ParadigmThe paradigm to work under.
Parameters
InExcludedTraitTypeThe trait type to exclude.
Returns
The outcome of the operation.

◆ ExcludedDetailAt()

TSubclassOf< UDetail > FFilter::ExcludedDetailAt ( const int32  Index) const
inline

Get an excluded detail by its index.

◆ ExcludedDetailsNum()

int32 FFilter::ExcludedDetailsNum ( ) const
inline

The number of excluded details in the filter.

◆ ExcludeDetail() [1/2]

template<EParadigm Paradigm, class D >
TOutcome< Paradigm, FFilter & > FFilter::ExcludeDetail ( )
inline

Exclude a detail class from filtering.

Templated paradigm version.

Template Parameters
ParadigmThe paradigm to work under.
DThe class of the detail to exclude.
Returns
The outcome of the operation.

◆ ExcludeDetail() [2/2]

template<class D >
auto FFilter::ExcludeDetail ( )
inline

Exclude a detail class from filtering.

Templated version.

Template Parameters
DThe class of the detail to exclude.
Returns
The outcome of the operation.

◆ ExcludeDetails()

template<EParadigm Paradigm = EParadigm::Default, typename AllocatorT >
TOutcome< Paradigm, FFilter & > FFilter::ExcludeDetails ( const TArray< TSubclassOf< UDetail >, AllocatorT > &  InExcludedDetailClasses)
inline

Add an array of details exclusions to the filter.

Template Parameters
ParadigmThe paradigm to work under.
AllocatorTThe type of the allocator of the details array.
Parameters
InExcludedDetailClassesThe details to exclude.
Returns
The outcome of the operation.

◆ ExcludedTraitAt()

UScriptStruct * FFilter::ExcludedTraitAt ( const int32  Index) const
inline

Get an excluded trait by its index.

◆ ExcludedTraitsNum()

int32 FFilter::ExcludedTraitsNum ( ) const
inline

The number of excluded traits in the filter.

◆ ExcludeFlag()

template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm, FFilter & > FFilter::ExcludeFlag ( const EFlagmarkBit  InBit)
inline

Add a flag as an excluding one.

Removes the flag from the positive flagmark accordingly.

Template Parameters
ParadigmThe paradigm to work under.
Returns
Returns itself to be used in a one-liner.
See also
Exclude(const EFlagmarkBit)

◆ ExcludeFlagmark()

template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm, FFilter & > FFilter::ExcludeFlagmark ( const EFlagmark  InExcludingFlagmark)
inline

Add a flagmark as an excluding one.

Removes the flagmark from the positive one accordingly.

Template Parameters
ParadigmThe paradigm to work under.
Parameters
InExcludingFlagmarkThe flagmark to exclude.
Returns
Returns itself to be used in a one-liner.
See also
Exclude(const EFlagmark)

◆ Excludes() [1/5]

template<class... Cs>
bool FFilter::Excludes ( ) const
inline

Check if the filter excludes all of the passed in components.

Templated version.

Template Parameters
CsThe excluding components to check for. All must be satisfied.
Returns
The state of examination.

◆ Excludes() [2/5]

bool FFilter::Excludes ( const EFlagmark  InFlagmark) const
inline

Check whether a filter excludes all of the flagmark bits passed in.

◆ Excludes() [3/5]

bool FFilter::Excludes ( const EFlagmarkBit  InBit) const
inline

Check whether a filter excludes a flag.

◆ Excludes() [4/5]

bool FFilter::Excludes ( const TSubclassOf< UDetail DetailClass) const
inline

Check if the filter excludes a specific detail class.

◆ Excludes() [5/5]

bool FFilter::Excludes ( UScriptStruct *const  TraitType) const
inline

Check if the filter excludes a specific trait type.

◆ ExcludesDetail()

template<class D >
bool FFilter::ExcludesDetail ( ) const
inline

Check if the filter excludes a specific detail class.

Templated version.

Template Parameters
DThe class of the excluding detail to search for.

◆ ExcludesTrait()

template<typename T >
bool FFilter::ExcludesTrait ( ) const
inline

Check if the filter excludes a specific trait type.

Templated version.

Template Parameters
TThe type of the excluding trait to search for.

◆ ExcludeTrait() [1/2]

template<EParadigm Paradigm, typename T >
TOutcome< Paradigm, FFilter & > FFilter::ExcludeTrait ( )
inline

Exclude a trait type from being matched.

Template paradigm version.

Template Parameters
ParadigmThe paradigm to work under.
TThe trait type to exclude.
Returns
The outcome of the operation.

◆ ExcludeTrait() [2/2]

template<typename T >
auto FFilter::ExcludeTrait ( )
inline

Exclude a trait type from being matched.

Template version.

Template Parameters
TThe trait type to exclude.
Returns
The outcome of the operation.

◆ ExcludeTraits()

template<EParadigm Paradigm = EParadigm::Default, typename AllocatorT = FDefaultAllocator>
TOutcome< Paradigm, FFilter & > FFilter::ExcludeTraits ( const TArray< UScriptStruct *, AllocatorT > &  InExcludedTraitTypes)
inline

Add an array of traits exclusions to the filter.

Template Parameters
ParadigmThe paradigm to work under.
AllocatorTThe type of the allocator of the traits array.
Parameters
InExcludedTraitTypesThe traits to exclude.
Returns
The outcome of the operation.

◆ GetDetailmark()

const FDetailmark & FFilter::GetDetailmark ( ) const
inline

Get the inclusive detailmark of the filter.

◆ GetDetails()

const DetailsType & FFilter::GetDetails ( ) const
inline

Get the included details of the filter.

◆ GetDetailsMask()

const FBitMask & FFilter::GetDetailsMask ( ) const
inline

Get the included details mask of the filter.

◆ GetExcludedDetails()

const DetailsType & FFilter::GetExcludedDetails ( ) const
inline

Get the excluded details of the filter.

◆ GetExcludedDetailsMask()

const FBitMask & FFilter::GetExcludedDetailsMask ( ) const
inline

Get the excluded details mask of the filter.

◆ GetExcludedTraits()

const TraitsType & FFilter::GetExcludedTraits ( ) const
inline

Get the excluded traits of the filter.

◆ GetExcludedTraitsMask()

const FBitMask & FFilter::GetExcludedTraitsMask ( ) const
inline

Get the excluded traits mask of the filter.

◆ GetExcludingFlagmark()

EFlagmark FFilter::GetExcludingFlagmark ( ) const
inline

Get the current negative flagmark of the filter.

◆ GetFingerprint()

const FFingerprint & FFilter::GetFingerprint ( ) const
inline

Get the inclusive fingerprint of the filter.

◆ GetFlagmark()

EFlagmark FFilter::GetFlagmark ( const std::memory_order  MemoryOrder = std::memory_order_relaxed) const
inline

Get the current positive flagmark of the filter.

Parameters
MemoryOrderThe memory order to use for the load of the filter's flagmark.
Returns
The current including flagmark of the filter.

◆ GetTraitmark()

const FTraitmark & FFilter::GetTraitmark ( ) const
inline

Get the inclusive traitmark of the filter.

◆ GetTraits()

const TraitsType & FFilter::GetTraits ( ) const
inline

Get the included traits of the filter.

◆ GetTraitsMask()

const FBitMask & FFilter::GetTraitsMask ( ) const
inline

Get the included traits mask of the filter.

◆ HasConflicts()

bool FFilter::HasConflicts ( ) const
inline

Check if there are any conflicts in the filter.

◆ Identical()

bool FFilter::Identical ( const FFilter Other,
uint32  PortFlags 
) const
inline

Compare two filters for equality.

Editor-friendly method.

Parameters
OtherThe other filter to compare to.
PortFlagsThe contextual port flags.
Returns
The state of examination.

◆ Include() [1/14]

template<EParadigm Paradigm, class... Cs>
TOutcome< Paradigm, FFilter & > FFilter::Include ( )
inline

Include component(s) within a filter.

Templated paradigm version.

Template Parameters
ParadigmThe paradigm to work under.
CsThe components to include.
Returns
Returns itself for the purpose of chaining.

◆ Include() [2/14]

template<class... Cs>
auto FFilter::Include ( )
inline

Include component(s) within a filter.

Templated version.

Template Parameters
CsThe components to include.
Returns
The outcome of the operation.

◆ Include() [3/14]

template<EParadigm Paradigm, class... Cs>
TOutcome< Paradigm, FFilter & > FFilter::Include ( const EFlagmark  Flagmark)
inline

Include component(s) alongside a flagmark within the filter.

Templated paradigm version.

Template Parameters
ParadigmThe paradigm to work under.
CsThe components to include.
Parameters
FlagmarkThe flagmark bit to also include within the filter.
Returns
Returns itself for chaining.

◆ Include() [4/14]

template<class... Cs>
auto FFilter::Include ( const EFlagmark  Flagmark)
inline

Include component(s) alongside a flagmark within the filter.

Templated version.

Template Parameters
CsThe components to include.
Parameters
FlagmarkThe flagmark bit to also include within the filter.
Returns
Returns itself for chaining.

◆ Include() [5/14]

template<EParadigm Paradigm, class... Cs>
TOutcome< Paradigm, FFilter & > FFilter::Include ( const EFlagmarkBit  Flag)
inline

Include component(s) alongside a flag within the filter.

Templated paradigm version.

Template Parameters
ParadigmThe paradigm to work under.
CsThe components to include.
Parameters
FlagThe flagmark bit to also include within the filter.
Returns
Returns itself for chaining.

◆ Include() [6/14]

template<class... Cs>
auto FFilter::Include ( const EFlagmarkBit  Flag)
inline

Include component(s) alongside a flag within the filter.

Templated version.

Template Parameters
CsThe components to include.
Parameters
FlagThe flagmark bit to also include within the filter.
Returns
Returns itself for chaining.

◆ Include() [7/14]

template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm, FFilter & > FFilter::Include ( const FFingerprint InFingerprint)
inline

Include a fingerprint within the filter.

Template Parameters
ParadigmThe paradigm to work under.
Parameters
InFingerprintThe fingerprint to include.
Returns
The outcome of the operation.

◆ Include() [8/14]

template<EParadigm Paradigm = EParadigm::Default, typename AllocatorT = FDefaultAllocator>
TOutcome< Paradigm, FFilter & > FFilter::Include ( const TArray< TSubclassOf< UDetail >, AllocatorT > &  DetailClasses)
inline

Add an arrary of detail classes as inclusions.

Template Parameters
ParadigmThe paradigm to work under.
AllocatorTThe allocator to use for the details classes array.
Parameters
DetailClassesThe detail classes to include.
Returns
Returns itself for the purpose of chaining.

◆ Include() [9/14]

template<EParadigm Paradigm = EParadigm::Default, typename AllocatorT = FDefaultAllocator>
TOutcome< Paradigm, FFilter & > FFilter::Include ( const TArray< UDetail *, AllocatorT > &  InDetails)
inline

Add an array of active details as inclusions.

Template Parameters
ParadigmThe paradigm to work under.
AllocatorTThe allocator of the array.
Parameters
InDetailsThe details to include. Only the active details get included.
Returns
The outcome of the operation.

◆ Include() [10/14]

template<EParadigm Paradigm = EParadigm::Default, typename AllocatorT = FDefaultAllocator>
TOutcome< Paradigm, FFilter & > FFilter::Include ( const TArray< UScriptStruct *, AllocatorT > &  TraitTypes)
inline

Add an array of trait types as inclusions.

Template Parameters
ParadigmThe paradigm to work under.
AllocatorTThe allocator to use for the traits types array.
Parameters
TraitTypesThe trait types to include.
Returns
Returns itself for the purpose of chaining.

◆ Include() [11/14]

template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm, FFilter & > FFilter::Include ( const TSubclassOf< UDetail DetailClass)
inline

Add a detail class.

Template Parameters
ParadigmThe paradigm to work under.
Parameters
DetailClassA class of the detail to add. May be a nullptr and is skipped in such case.
Returns
The status of the operation.

◆ Include() [12/14]

template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm, FFilter & > FFilter::Include ( std::initializer_list< TSubclassOf< UDetail > >  InDetailClasses)
inline

Add a variadic list of detail classes as inclusions.

Template Parameters
ParadigmThe paradigm to work under.
Parameters
InDetailClassesThe initializer list of detail classes to include.
Returns
The outcome of the operation.

◆ Include() [13/14]

template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm, FFilter & > FFilter::Include ( std::initializer_list< UScriptStruct * >  InTraitTypes)
inline

Add a variadic list of trait types as inclusions.

Template Parameters
ParadigmThe paradigm to work under.
Parameters
InTraitTypesThe trait types to add as a variadic list.
Returns
The outcome of the operation.

◆ Include() [14/14]

template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm, FFilter & > FFilter::Include ( UScriptStruct *const  TraitType)
inline

Add a trait type.

Template Parameters
ParadigmThe paradigm to work under.
Parameters
TraitTypeA type of the trait to add. May be a nullptr and is skipped in such case.
Returns
The status of the operation.

◆ IncludeDetail() [1/2]

template<EParadigm Paradigm, class D >
TOutcome< Paradigm, FFilter & > FFilter::IncludeDetail ( )
inline

Include a detail class within the filter.

Templated paradigm version.

Template Parameters
ParadigmThe paradigm to work under.
DThe class of the detail to include.
Returns
The outcome of the operation.
See also
Include()

◆ IncludeDetail() [2/2]

template<class D >
auto FFilter::IncludeDetail ( )
inline

Include a detail class within the filter.

Templated version.

Template Parameters
DThe class of the detail to include.
Returns
The outcome of the operation.
See also
Include()

◆ IncludeFlag()

template<EParadigm Paradigm = EParadigm::Default>
auto FFilter::IncludeFlag ( const EFlagmarkBit  InBit)
inline

Add a flag as an including one.

Removes the flag from the excluding one as necessary.

Template Parameters
ParadigmThe paradigm to work under.
Parameters
InBitThe flagmark bit to include in to the filtering.
Returns
Returns itself for chaining.
See also
Include(const EFlagmarkBit)

◆ IncludeFlagmark()

template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm, FFilter & > FFilter::IncludeFlagmark ( const EFlagmark  InFlagmark)
inline

Add a flagmark as an including one.

Removes the flagmark from the excluding filtering as necessary.

Template Parameters
ParadigmThe paradigm to work under.
Parameters
InFlagmarkThe flagmark to include in to the filtering.
Returns
Returns itself for chaining.
See also
Include(const EFlagmark)

◆ Includes() [1/5]

template<class... Cs>
bool FFilter::Includes ( ) const
inline

Check if the filter includes all of the passed in components.

Templated version.

Template Parameters
CsThe excluding components to check for. All must be satisfied.
Returns
The state of examination.

◆ Includes() [2/5]

bool FFilter::Includes ( const EFlagmark  InFlagmark) const
inline

Check whether a filter includes all of the passed in flagmark flags.

See also
Includes(const EFlagmarkBit)

◆ Includes() [3/5]

bool FFilter::Includes ( const EFlagmarkBit  InBit) const
inline

Check whether a filter includes a certain flag.

See also
Includes(const InFlagmark)

◆ Includes() [4/5]

bool FFilter::Includes ( const TSubclassOf< UDetail DetailClass) const
inline

Check whether a filter contains a detail specification.

◆ Includes() [5/5]

bool FFilter::Includes ( UScriptStruct *const  TraitType) const
inline

Check whether a filter contains a trait specification.

◆ IncludesDetail()

template<class D >
bool FFilter::IncludesDetail ( ) const
inline

Check whether a filter contains a detail specification.

Templated version.

Template Parameters
DThe class of the detail to search for.

◆ IncludesTrait()

template<typename T >
bool FFilter::IncludesTrait ( ) const
inline

Check whether a filter contains a trait specification.

Templated version.

Template Parameters
TThe type of the trait to search for.

◆ IncludeTrait() [1/2]

template<EParadigm Paradigm, typename T >
TOutcome< Paradigm, FFilter & > FFilter::IncludeTrait ( )
inline

Include a trait type within the filter.

Templated paradigm version.

Template Parameters
ParadigmThe paradigm to work under.
TThe type of the trait to include.
Returns
The outcome of the operation.

◆ IncludeTrait() [2/2]

template<typename T >
auto FFilter::IncludeTrait ( )
inline

Include a trait type within the filter.

Templated version.

Template Parameters
TThe type of the trait to include.
Returns
The outcome of the operation.

◆ IndexOf() [1/2]

int32 FFilter::IndexOf ( const TSubclassOf< UDetail DetailClass) const
inline

Find the index of a specific detail class.

Supports parent classes.

◆ IndexOf() [2/2]

int32 FFilter::IndexOf ( UScriptStruct *const  TraitType) const
inline

Find the index of a specific trait type.

◆ IndicesOf()

template<typename AllocatorT >
EApparatusStatus FFilter::IndicesOf ( const TSubclassOf< UDetail DetailClass,
TArray< int32, AllocatorT > &  OutIndices 
) const
inline

Find the indices of a specific detail class.

Supports parent classes.

◆ IsBeltBased()

bool FFilter::IsBeltBased ( ) const
inline

Check if the filter requires a belt-wise iterating process.

Returns true, if there are any details included within the filter.

◆ IsDetailWise()

bool FFilter::IsDetailWise ( ) const
inline

Check if there is some kind of detail-wise filtering.

◆ IsTraitWise()

bool FFilter::IsTraitWise ( ) const
inline

Check if there is some kind of trait-wise filtering.

◆ Make() [1/3]

template<typename ... Ts>
static FFilter FFilter::Make ( const EFlagmark  InFlagmark = DefaultFlagmark,
const EFlagmark  InExcludingFlagmark = DefaultExcludingFlagmark 
)
inlinestatic

Make a new filter with a list of components.

Template Parameters
TsThe types and classes of traits and details to fill with.
Parameters
InFlagmarkThe flagmark to use.
InExcludingFlagmarkThe excluding flagmark to use.
Returns
The resulting traitmark.

◆ Make() [2/3]

template<typename... Ts>
static FFilter FFilter::Make ( const EFlagmarkBit  InFlagmarkBit)
inlinestatic

Make a new filter with a list of components.

Template Parameters
TsThe types and classes of traits and details to fill with.
Parameters
InFlagmarkBitThe flagmark bit to use.
Returns
The resulting traitmark.

◆ Make() [3/3]

template<typename... Ts>
static FFilter FFilter::Make ( const EFlagmarkBit  InFlagmarkBit,
const EFlagmarkBit  InExcludingFlagmarkBit 
)
inlinestatic

Make a new filter with a list of components.

Template Parameters
TsThe types and classes of traits and details to fill with.
Parameters
InFlagmarkBitThe flagmark bit to use.
InExcludingFlagmarkBitThe flagmark bit to use as an excluding one.
Returns
The resulting traitmark.

◆ Matches()

bool FFilter::Matches ( const FFilter Filter) const
inline

Check if the filter matches an another filter.

◆ operator!=()

bool FFilter::operator!= ( const FFilter Other) const
inline

Compare filters for inequality.

◆ operator+=() [1/8]

FFilter & FFilter::operator+= ( const FFingerprint InFingerprint)
inline

Include a fingerprint within the filter.

◆ operator+=() [2/8]

template<typename AllocatorT >
FFilter & FFilter::operator+= ( const TArray< TSubclassOf< UDetail >, AllocatorT > &  InDetailClasses)
inline

Add an array of detail classes.

◆ operator+=() [3/8]

template<typename AllocatorT >
FFilter & FFilter::operator+= ( const TArray< UDetail *, AllocatorT > &  InDetails)
inline

Add active details from an array.

◆ operator+=() [4/8]

template<typename AllocatorT >
FFilter & FFilter::operator+= ( const TArray< UScriptStruct *, AllocatorT > &  InTraitTypes)
inline

Add an array of trait types.

◆ operator+=() [5/8]

FFilter & FFilter::operator+= ( const TSubclassOf< UDetail DetailClass)
inline

Add a single detail class of included details.

◆ operator+=() [6/8]

FFilter & FFilter::operator+= ( std::initializer_list< TSubclassOf< UDetail > >  InDetailClasses)
inline

Include variadic detail classes.

◆ operator+=() [7/8]

FFilter & FFilter::operator+= ( std::initializer_list< UScriptStruct * >  InTraitTypes)
inline

Include variadic trait types.

◆ operator+=() [8/8]

FFilter & FFilter::operator+= ( UScriptStruct *const  TraitType)
inline

Add a single trait type to the list of included traits.

◆ operator=() [1/5]

FFilter & FFilter::operator= ( const FFilter Filter)
inline

Set a filter equal to another filter.

◆ operator=() [2/5]

template<typename AllocatorT >
FFilter & FFilter::operator= ( const TArray< TSubclassOf< UDetail >, AllocatorT > &  DetailClasses)
inline

Set the filter equal to an array of detail classes.

Preserves the current boot filter.

◆ operator=() [3/5]

template<typename AllocatorT >
FFilter & FFilter::operator= ( const TArray< UDetail *, AllocatorT > &  InDetails)
inline

Set the filter equal to an array of active details.

◆ operator=() [4/5]

template<typename AllocatorT >
FFilter & FFilter::operator= ( const TArray< UScriptStruct *, AllocatorT > &  TraitTypes)
inline

Set a filter to an array of trait types.

Preserves the current boot filter.

◆ operator=() [5/5]

FFilter & FFilter::operator= ( FFilter &&  Filter)
inline

Move a filter to this one.

◆ operator==()

bool FFilter::operator== ( const FFilter Other) const
inline

Compare filters for equality.

◆ PostSerialize()

void FFilter::PostSerialize ( const FArchive &  Archive)

Post-serialize the filter updating its caches.

◆ RemoveDetailExclusion() [1/2]

template<EParadigm Paradigm, class D >
TOutcome< Paradigm > FFilter::RemoveDetailExclusion ( )
inline

Remove an excluded detail from the filter.

Templated paradigm version.

Template Parameters
ParadigmThe paradigm to work under.
DThe class of the detail inclusion to remove.
Returns
The status of the operation.

◆ RemoveDetailExclusion() [2/2]

template<class D >
auto FFilter::RemoveDetailExclusion ( )
inline

Remove an excluded detail from the filter.

Templated version.

Template Parameters
DThe class of the detail inclusion to remove.
Returns
The status of the operation.

◆ RemoveDetailInclusion() [1/2]

template<EParadigm Paradigm, class D >
TOutcome< Paradigm > FFilter::RemoveDetailInclusion ( )
inline

Remove an included detail from the filter.

Templated paradigm version.

Template Parameters
ParadigmThe paradigm to work under.
DThe class of the detail inclusion to remove.
Returns
The status of the operation.

◆ RemoveDetailInclusion() [2/2]

template<class D >
auto FFilter::RemoveDetailInclusion ( )
inline

Remove an included detail from the filter.

Templated version.

Template Parameters
DThe class of the detail inclusion to remove.
Returns
The status of the operation.

◆ RemoveExclusion() [1/5]

template<EParadigm Paradigm, class... Cs>
TOutcome< Paradigm > FFilter::RemoveExclusion ( )
inline

Remove the excluding component(s) from the filter.

Templated paradigm version.

Template Parameters
ParadigmThe paradigm to work under.
CsThe excluding components to remove.
Returns
The outcome of the operation.

◆ RemoveExclusion() [2/5]

template<class... Cs>
auto FFilter::RemoveExclusion ( )
inline

Remove the excluding component(s) from the filter.

Templated paradigm version.

Template Parameters
CsThe excluding components to remove.
Returns
The outcome of the operation.

◆ RemoveExclusion() [3/5]

template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > FFilter::RemoveExclusion ( const EFlagmark  InFlagmark)
inline

Remove an excluding flagmark from the filter specification.

Template Parameters
ParadigmThe paradigm to work under.
Parameters
InFlagmarkThe excluding flagmark to remove.
Returns
The status of the operation.
EApparatusStatus::Noop if nothing was actually performed.

◆ RemoveExclusion() [4/5]

template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > FFilter::RemoveExclusion ( const TSubclassOf< UDetail DetailClass)
inline

Remove an excluding detail class from the filter specification.

Template Parameters
ParadigmThe paradigm to work under.
Parameters
DetailClassThe excluding detail class to remove.
Returns
The status of the operation.
EApparatusStatus::Noop if nothing was actually performed.

◆ RemoveExclusion() [5/5]

template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > FFilter::RemoveExclusion ( UScriptStruct *const  TraitType)
inline

Remove an excluding trait type from the filter specification.

Template Parameters
ParadigmThe paradigm to work under.
Parameters
TraitTypeThe excluding trait type to remove.
Returns
The status of the operation.
EApparatusStatus::Noop if nothing was actually performed.

◆ RemoveInclusion() [1/5]

template<EParadigm Paradigm, class... Cs>
TOutcome< Paradigm > FFilter::RemoveInclusion ( )
inline

Remove the component(s) from the filter.

Templated paradigm version.

Template Parameters
ParadigmThe paradigm to work under.
CsThe types or classes of the components to remove.
Returns
The outcome of the operation.
EApparatusStatus::Noop if nothing was actually changed.

◆ RemoveInclusion() [2/5]

template<class... Cs>
auto FFilter::RemoveInclusion ( )
inline

Remove the component(s) from the filter.

Templated version.

Template Parameters
CsThe types or classes of the components to remove.
Returns
The status of the operation.
EApparatusStatus::Noop if nothing was actually changed.

◆ RemoveInclusion() [3/5]

template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > FFilter::RemoveInclusion ( const EFlagmark  InFlagmark)
inline

Remove a flagmark inclusion from the filter specification.

Template Parameters
ParadigmThe paradigm to work under.
Parameters
InFlagmarkA flagmark to remove from being included.
Returns
The status of the operation.

◆ RemoveInclusion() [4/5]

template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > FFilter::RemoveInclusion ( const TSubclassOf< UDetail DetailClass)
inline

Remove a detail class from the filter specification.

Note
Even the base matching details will be removed. The result is that the resulting filter won't contain that passed detail class.
Template Parameters
ParadigmThe paradigm to work under.
Parameters
DetailClassA detail class to remove. May be a base class. If nullptr, nothing is performed.
Returns
The status of the operation.

◆ RemoveInclusion() [5/5]

template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > FFilter::RemoveInclusion ( UScriptStruct *const  TraitType)
inline

Remove a trait type from the filter specification.

Template Parameters
ParadigmThe paradigm to work under.
Parameters
TraitTypeA trait type to remove. If nullptr, nothing is performed.
Returns
The outcome of the operation.

◆ RemoveTraitExclusion() [1/2]

template<EParadigm Paradigm, typename T >
TOutcome< Paradigm > FFilter::RemoveTraitExclusion ( )
inline

Remove an excluded trait from the filter.

Templated paradigm version.

Template Parameters
ParadigmThe paradigm to work under.
TThe type of the trait inclusion to remove.
Returns
The status of the operation.

◆ RemoveTraitExclusion() [2/2]

template<typename T >
auto FFilter::RemoveTraitExclusion ( )
inline

Remove an excluded trait from the filter.

Templated version.

Template Parameters
TThe type of the trait inclusion to remove.
Returns
The status of the operation.

◆ RemoveTraitInclusion() [1/2]

template<EParadigm Paradigm, typename T >
TOutcome< Paradigm > FFilter::RemoveTraitInclusion ( )
inline

Remove an included trait from the filter.

Template paradigm version.

Template Parameters
ParadigmThe paradigm to work under.
TThe type of the trait inclusion to remove.
Returns
The status of the operation.

◆ RemoveTraitInclusion() [2/2]

template<typename T >
auto FFilter::RemoveTraitInclusion ( )
inline

Remove an included trait from the filter.

Template version.

Template Parameters
TThe type of the trait inclusion to remove.
Returns
The status of the operation.

◆ Reset()

template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > FFilter::Reset ( const EFlagmark  InFlagmark = DefaultFlagmark,
const EFlagmark  InExcludingFlagmark = DefaultExcludingFlagmark 
)
inline

Clear the fingerprint without any deallocations.

Template Parameters
ParadigmThe paradigm to work under.
Parameters
InFlagmarkThe flagmark to reset to.
InExcludingFlagmarkThe negative flagmark to reset to.
Returns
The status of the operation.

◆ Set() [1/5]

void FFilter::Set ( const FFilter Filter)
inline

Set a filter equal to another filter.

◆ Set() [2/5]

template<typename AllocatorT >
void FFilter::Set ( const TArray< TSubclassOf< UDetail >, AllocatorT > &  DetailClasses)
inline

Set a filter to an array of detail classes.

Preserves the current boot filter.

◆ Set() [3/5]

template<typename AllocatorT >
void FFilter::Set ( const TArray< UDetail *, AllocatorT > &  Details)
inline

Set a filter to an array of details.

Preserves the current boot filter.

◆ Set() [4/5]

template<typename AllocatorT >
void FFilter::Set ( const TArray< UScriptStruct *, AllocatorT > &  TraitTypes)
inline

Set a filter to an array of trait types.

Preserves the current boot filter.

◆ Set() [5/5]

void FFilter::Set ( FFilter &&  Filter)
inline

Move a filter to this one.

◆ SetExcludingFlagmark()

template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > FFilter::SetExcludingFlagmark ( EFlagmark  InExcludingFlagmark)
inline

Set the new active negative flagmark.

Template Parameters
ParadigmThe paradigm to work under.
Parameters
InExcludingFlagmarkThe excluding flagmark to set.
Returns
The outcome of the operation.

◆ SetFlagmark()

template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > FFilter::SetFlagmark ( const EFlagmark  InFlagmark,
const std::memory_order  MemoryOrder = std::memory_order_relaxed 
)
inline

Set the new positive, including flagmark.

Template Parameters
ParadigmThe paradigm to work under.
Parameters
InFlagmarkThe including flagmark to set.
MemoryOrderThe memory order to use for the store of the filter's flagmark.
Returns
The outcome of the operation.
EApparatusStatus::Noop if nothing was actually changed.

◆ ToString()

FString FFilter::ToString ( ) const

Convert the filter to a string representation.

Returns
The string representation of the filter.

◆ TraitAt()

UScriptStruct * FFilter::TraitAt ( const int32  Index) const
inline

Get an included trait by its index.

◆ TraitsNum()

int32 FFilter::TraitsNum ( ) const
inline

The number of included traits in the filter.

Returns
The number of traits currently being included within the filter.

Friends And Related Function Documentation

◆ GetTypeHash

uint32 GetTypeHash ( const FFilter Filter)
friend

Get the hash of a filter.

◆ TFilter

template<class ... Cs>
friend struct TFilter
friend

◆ UApparatusFunctionLibrary

friend class UApparatusFunctionLibrary
friend

◆ UBelt

friend class UBelt
friend

◆ UMachine

friend class UMachine
friend

Member Data Documentation

◆ Default

const FFilter FFilter::Default
static

A default filter specification.

Will match the booted non-stale subjects only.

◆ DefaultExcludingFlagmark

constexpr EFlagmark FFilter::DefaultExcludingFlagmark = FM_Stale
staticconstexpr

The default excluding flagmark used in a filter.

◆ DefaultFlagmark

constexpr EFlagmark FFilter::DefaultFlagmark = FM_Booted
staticconstexpr

The default flagmark used in a filter.

◆ Zero

const FFilter FFilter::Zero
static

An empty filter specification.

Will match all subjects (both booted and halted and stale).


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