Apparatus Version 1.23
ECS data-oriented workflow for Unreal Engine.
Loading...
Searching...
No Matches
Classes | Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | Friends | List of all members
FFingerprint Struct Reference

The traits/details fingerprint. More...

#include <Fingerprint.h>

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

Public Types

typedef FTraitmark::TraitsType TraitsType
 The type of traits array.
 
typedef FDetailmark::DetailsType DetailsType
 The type of details array.
 

Public Member Functions

const TraitsTypeGetTraits () const
 Get the traits of the fingerprint.
 
const DetailsTypeGetDetails () const
 Get the details of the fingerprint.
 
int32 TraitsNum () const
 The number of traits in the fingerprint.
 
int32 DetailsNum () const
 The number of details in the fingerprint.
 
const FTraitmarkGetTraitmark () const
 Get the traitmark part of the fingerprint.
 
const FDetailmarkGetDetailmark () const
 Get the detailmark part of the fingerprint.
 
 operator const FTraitmark & () const
 Convert a fingerprint to a traitmark.
 
 operator const FDetailmark & () const
 Convert a fingerprint to a detailmark.
 
const FBitMaskGetTraitsMask () const
 Get the traits mask of the fingerprint.
 
const FBitMaskGetDetailsMask () const
 Get the details mask of the fingerprint.
 
UScriptStruct * TraitAt (const int32 Index) const
 Get a trait by its index.
 
TSubclassOf< UDetailDetailAt (const int32 Index) const
 Get a detail by its index.
 
 operator TraitsType () const
 Convert to an array of trait types.
 
 operator DetailsType () const
 Convert to an array of detail classes.
 
bool IsEmpty () const
 Check if the fingerprint is completely empty.
 
 operator bool () const
 Check if a fingerprint is viable and has any effect.
 
EApparatusStatus FindDetailsMappingFrom (const TArray< TSubclassOf< UDetail > > &InDetailClasses, TArray< int32 > &OutMapping) const
 Get an indexing mapping from another fingerprint defined by an array of details.
 
void FindTraitsMappingFrom (const TArray< UScriptStruct * > &InTraitmark, TArray< int32 > &OutMapping) const
 Get an indexing mapping from another traitmark defined by an array of traits.
 
EApparatusStatus FindDetailsMappingFrom (const TArray< TSubclassOf< UDetail > > &InDetailClasses, TArray< TArray< int32 > > &OutMapping) const
 Get an indexing multi-mapping from another fingerprint defined by an array of details.
 
EApparatusStatus FindDetailsMappingFrom (const FFingerprint &Fingerprint, TArray< int32 > &OutMapping) const
 Get an indexing mapping from another fingerprint.
 
EApparatusStatus FindTraitsMappingFrom (const FFingerprint &Fingerprint, TArray< int32 > &OutMapping) const
 Get an indexing mapping from another fingerprint's traits.
 
EApparatusStatus FindTraitsMappingFrom (const FTraitmark &InTraitmark, TArray< int32 > &OutMapping) const
 Get an indexing mapping from another traitmark's traits.
 
EApparatusStatus FindDetailsMappingTo (const FFingerprint &Fingerprint, TArray< int32 > &OutMapping) const
 Get an indexing details mapping to another fingerprint.
 
EApparatusStatus FindTraitsMappingTo (const FTraitmark &InTraitmark, TArray< int32 > &OutMapping) const
 Get an indexing traits mapping to another traitmark.
 
EApparatusStatus FindTraitsMappingTo (const FFingerprint &InFingerprint, TArray< int32 > &OutMapping) const
 Get an indexing traits mapping to another traitmark.
 
EApparatusStatus FindDetailsMappingFrom (const FFingerprint &Fingerprint, TArray< TArray< int32 > > &OutMapping) const
 Get a detail indexing multi-mapping from another fingerprint.
 
EApparatusStatus FindDetailsMappingTo (const FFingerprint &Fingerprint, TArray< TArray< int32 > > &OutMapping) const
 Get an indexing multi-mapping to another fingerprint.
 
bool FlagmarkMatches (const FFilter &Filter) const
 Check if the fingerprint's flagmark matches a filter.
 
bool TraitsMatch (const FFilter &Filter) const
 Check if the fingerprint's traits part match a filter.
 
bool DetailsMatch (const FFilter &Filter) const
 Check if the fingerprint's details part match a filter.
 
bool Matches (const EFlagmark IncludingFlagmark, const EFlagmark ExcludingFlagmark=FM_None) const
 Check if the fingerprint matches the flagmarks used as filters.
 
bool Matches (const FFilter &Filter) const
 Check if the fingerprint matches a filter.
 
bool Matches (const FFilter &Filter, const EFlagmark IncludingFlagmarkOverride, const EFlagmark ExcludingFlagmarkOverride) const
 Check if the fingerprint matches a filter with flagmarks filtering overriden.
 
bool Matches (const FFingerprint &InFingerprint) const
 Check if the fingerprint matches another fingerprint acting as a filter.
 
bool Matches (const FTraitmark &InTraitmark) const
 Check if the fingerprint matches a traitmark acting as a filter.
 
bool Matches (const FDetailmark &InDetailmark) const
 Check if the fingerprint matches a detailmark acting as a filter.
 
bool operator== (const FFingerprint &Other) const
 Compare two fingerprints for equality.
 
bool operator!= (const FFingerprint &Other) const
 Compare two fingerprint for inequality.
 
bool Identical (const FFingerprint *Other, uint32 PortFlags) const
 Compare two fingerprints for equality.
 
int32 IndexOf (UScriptStruct *const TraitType) const
 Get the index of a specific trait type.
 
int32 IndexOf (const TSubclassOf< UDetail > DetailClass) const
 Get the index of a specific detail class.
 
EApparatusStatus IndicesOf (const TSubclassOf< UDetail > DetailClass, TArray< int32 > &OutIndices) const
 Get the indices of a specific detail class.
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > SetTraitmark (FTraitmark &&InTraitmark)
 Move a traitmark to the fingerprint's traitmark.
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > SetTraitmark (const FTraitmark &InTraitmark)
 Set the fingerprint's traitmark equal to a traitmark.
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > SetDetailmark (FDetailmark &&InDetailmark)
 Move a detailmark to the fingerprint's detailmark.
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > SetDetailmark (const FDetailmark &InDetailmark)
 Set the fingerprint's detailmark equal to a detailmark.
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > Set (FTraitmark &&InTraitmark, const bool bPreserveFlagmark=true)
 Move a traitmark to the fingerprint.
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > Set (const FTraitmark &InTraitmark, const bool bPreserveFlagmark=true)
 Set the fingerprint equal to a traitmark.
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > Set (FDetailmark &&InDetailmark, const bool bPreserveFlagmark=true)
 Move a detailmark to the fingerprint.
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > Set (const FDetailmark &InDetailmark, const bool bPreserveFlagmark=true)
 Set the fingerprint equal to a detailmark.
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > Set (FFingerprint &&InFingerprint)
 Move another fingerprint to this one.
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > Set (const FFingerprint &InFingerprint)
 Set the fingerprint equal to another one.
 
template<EParadigm Paradigm = EParadigm::Default, typename AllocatorT = FDefaultAllocator>
TOutcome< Paradigm > Set (const TArray< UScriptStruct *, AllocatorT > &InTraits, const EFlagmark InFlagmark)
 Set the fingerprint to an array of traits and a flagmark.
 
template<EParadigm Paradigm = EParadigm::Default, typename AllocatorT = FDefaultAllocator>
TOutcome< Paradigm > Set (const TArray< TSubclassOf< UDetail >, AllocatorT > &InDetailClasses, const EFlagmark InFlagmark)
 Set a fingerprint to an array of detail classes and a flagmark.
 
template<EParadigm Paradigm = EParadigm::Default, typename AllocatorT = FDefaultAllocator>
TOutcome< Paradigm > Set (const TArray< UDetail *, AllocatorT > &InDetails, const EFlagmark InFlagmark)
 Set a fingerprint to an array of active-tested details and a flagmark.
 
FFingerprintoperator= (FTraitmark &&InTraitmark)
 Move a traitmark to the fingerprint.
 
FFingerprintoperator= (const FTraitmark &InTraitmark)
 Set the fingerprint equal to a traitmark.
 
FFingerprintoperator= (FDetailmark &&InDetailmark)
 Move a detailmark to the fingerprint.
 
FFingerprintoperator= (const FDetailmark &InDetailmark)
 Set the fingerprint equal to a detailmark.
 
FFingerprintoperator= (FFingerprint &&Fingerprint)
 Move a fingerprint to this one.
 
FFingerprintoperator= (const FFingerprint &Fingerprint)
 Set the fingerprint equal to another fingerprint.
 
template<typename AllocatorT >
FFingerprintoperator= (const TArray< UScriptStruct *, AllocatorT > &InTraitTypes)
 Set a fingerprint equal to an array of trait types.
 
template<typename AllocatorT >
FFingerprintoperator= (const TArray< TSubclassOf< UDetail >, AllocatorT > &InDetailClasses)
 Set a fingerprint equal to an array of detail classes.
 
template<typename AllocatorT >
FFingerprintoperator= (const TArray< UDetail *, AllocatorT > &InDetails)
 Set a fingerprint equal to an array of details.
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > Reset (const EFlagmark InFlagmark=FM_None)
 Clear the fingerprint without any deallocations.
 
FString ToString () const
 Convert a fingerprint to a string.
 
uint32 CalcHash () const
 Calculate the hash sum of the fingerprint.
 
bool Serialize (FArchive &Archive)
 Serialize the fingerprint to the archive.
 
void PostSerialize (const FArchive &Archive)
 Post-serialize the fingerprint updating its caches.
 
 FFingerprint (const int32 InFlagmark=FM_None)
 Construct an empty fingerprint with an optional boot state.
 
 FFingerprint (const TSubclassOf< UDetail > DetailClass, const int32 InFlagmark=FM_None)
 Construct a new fingerprint from a single detail class and an optional boot state.
 
 FFingerprint (UScriptStruct *const TraitType, const int32 InFlagmark=FM_None)
 Construct a new fingerprint from a single trait type and an optional boot state.
 
template<typename AllocatorT >
 FFingerprint (const TArray< UDetail *, AllocatorT > &InDetailClasses, const int32 InFlagmark=FM_None)
 Construct a fingerprint from an array of details and an optional boot state.
 
template<typename AllocatorT >
 FFingerprint (const TArray< TSubclassOf< UDetail >, AllocatorT > &InDetailClasses, const int32 InFlagmark=FM_None)
 Construct a fingerprint from an array of detail classes and an optional boot state.
 
template<typename AllocatorTA , typename AllocatorTB >
 FFingerprint (const TArray< UScriptStruct *, AllocatorTA > &InTraitTypes, const TArray< TSubclassOf< UDetail >, AllocatorTB > &InDetailClasses, const int32 InFlagmark=FM_None)
 Construct a fingerprint from arrays of detail classes and trait types and also an optional boot state.
 
 FFingerprint (std::initializer_list< UScriptStruct * > InTraitTypes, std::initializer_list< TSubclassOf< UDetail > > InDetailClasses, const int32 InFlagmark=FM_None)
 Construct a fingerprint from initializer lists of trait types and detail classes and also an optional boot state.
 
 FFingerprint (FFingerprint &&InFingerprint)
 Move-construct a new fingerprint.
 
 FFingerprint (const FFingerprint &InFingerprint)
 Construct a fingerprint as a copy of another one.
 
template<typename ... Ts>
 FFingerprint (TFingerprint< Ts... > &&InFingerprint)
 Move-construct from a templated fingerprint.
 
 FFingerprint (FTraitmark &&InTraitmark, const int32 InFlagmark=FM_None)
 Construct a new fingerprint while moving a traitmark and a flagmark.
 
 FFingerprint (FDetailmark &&InDetailmark, const int32 InFlagmark=FM_None)
 Construct a new fingerprint while moving a detailmark and a flagmark.
 
 FFingerprint (FTraitmark &&InTraitmark, FDetailmark &&InDetailmark, const int32 InFlagmark=FM_None)
 Construct a new fingerprint while moving a traitmark and a detailmark.
 
 FFingerprint (const FTraitmark &InTraitmark, const int32 InFlagmark=FM_None)
 Construct a new fingerprint with a traitmark and a flagmark.
 
 FFingerprint (const FDetailmark &InDetailmark, const int32 InFlagmark=FM_None)
 Construct a new fingerprint with a detailmark and a flagmark.
 
 FFingerprint (const FTraitmark &InTraitmark, const FDetailmark &InDetailmark, const int32 InFlagmark=FM_None)
 Construct a new fingerprint with a traitmark and a detailmark.
 
Flagmark
EFlagmark GetFlagmark (const std::memory_order MemoryOrder=std::memory_order_acquire) const
 Get the flagmark.
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm, EFlagmarkSetFlagmark (const EFlagmark InFlagmark, const std::memory_order MemoryOrder=std::memory_order_release)
 Set the new active flagmark.
 
EApparatusStatus SetFlagmark_Status (const EFlagmark InFlagmark)
 Set the new active flagmark.
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm, EFlagmarkSetFlagmarkMasked (const EFlagmark InFlagmark, const EFlagmark InMask, const std::memory_order MemoryOrder=std::memory_order_release)
 Set the new active flagmark to a masked flagmark.
 
EApparatusStatus SetFlagmarkMasked_Status (const EFlagmark InFlagmark, const EFlagmark InMask)
 Set the new active flagmark to a masked flagmark.
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm, EFlagmarkAddToFlagmark (const EFlagmark InFlagmark, const std::memory_order MemoryOrder=std::memory_order_release)
 Add flags to the flagmark.
 
EApparatusStatus AddToFlagmark_Status (const EFlagmark InFlagmark)
 Add flags to the flagmark.
 
FFingerprintoperator+= (const EFlagmark InFlagmark)
 Add flagmark to the fingerprint.
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm, EFlagmarkRemoveFromFlagmark (const EFlagmark InFlagmark, const std::memory_order MemoryOrder=std::memory_order_release)
 Remove flags from the flagmark.
 
FFingerprintoperator-= (const EFlagmark InFlagmark)
 Remove flagmark from the fingerprint.
 
EApparatusStatus RemoveFromFlagmark_Status (const EFlagmark InFlagmark)
 Remove flags from the flagmark.
 
bool HasFlag (const EFlagmarkBit Flag, const std::memory_order MemoryOrder=std::memory_order_acquire) const
 Get the flag state of the fingerprint.
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm, boolSetFlag (const EFlagmarkBit Flag, const bool bState=true, const std::memory_order MemoryOrder=std::memory_order_release)
 Set a flagmark bit to a specific state.
 
EApparatusStatus SetFlag_Status (const EFlagmarkBit Flag, const bool bState=true)
 Set a flagmark bit to a specific state.
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm, boolToggleFlag (const EFlagmarkBit Flag, const std::memory_order MemoryOrder=std::memory_order_release)
 Toggle the state of a flagmark bit.
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm, boolSetBooted (bool bState=true, const std::memory_order MemoryOrder=std::memory_order_release)
 Set the new active boot state.
 
bool IsStale (const std::memory_order MemoryOrder=std::memory_order_acquire) const
 Check if the fingerprint corresponds to a stale entity.
 
bool IsBooted (const std::memory_order MemoryOrder=std::memory_order_acquire) const
 Check if the fingerprint corresponds to a booted entity.
 
Addition
template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > Add (std::initializer_list< UScriptStruct * > TraitTypes)
 Add trait types to the fingerprint.
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > Add (std::initializer_list< TSubclassOf< UDetail > > DetailClasses)
 Add detail classes to the fingerprint.
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > Add (const FFingerprint &InFingerprint)
 Add a fingerprint.
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > Add (const FFingerprint &InFingerprint, const EFlagmark InFlagmark)
 Add a fingerprint with a flagmark override.
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > Add (UScriptStruct *const TraitType, const EFlagmark InFlagmark=FM_None)
 Add a trait type and a flagmark to the fingerprint.
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > Add (const TSubclassOf< UDetail > DetailClass, const EFlagmark InFlagmark=FM_None)
 Add a detail class and a flagmark to the fingerprint.
 
template<EParadigm Paradigm = EParadigm::Default, typename TraitsExtractorT = void>
TOutcome< Paradigm > Add (const TraitsExtractorT &InTraits, const EFlagmark InFlagmark=FM_None)
 Add generic traits and a boot state specification.
 
template<EParadigm Paradigm = EParadigm::Default, typename AllocatorT = FDefaultAllocator>
TOutcome< Paradigm > Add (const TArray< UScriptStruct *, AllocatorT > &InTraitTypes, const EFlagmark InFlagmark=FM_None)
 Add an array of traits and a flagmark specification.
 
template<EParadigm Paradigm = EParadigm::Default, typename AllocatorT = FDefaultAllocator>
TOutcome< Paradigm > Add (const TArray< TSubclassOf< UDetail >, AllocatorT > &InDetailClasses, const EFlagmark InFlagmark=FM_None)
 Add an arrary of detail classes and an optional flagmark.
 
template<EParadigm Paradigm = EParadigm::Default, typename AllocatorT = FDefaultAllocator>
TOutcome< Paradigm > Add (const TArray< UDetail *, AllocatorT > &InDetails, const EFlagmark InFlagmark=FM_None)
 Add an array of details and an optional flagmark.
 
template<EParadigm Paradigm, typename T >
TOutcome< Paradigm > AddTrait ()
 Add a trait type.
 
template<typename T >
TOutcome< EParadigm::Default > AddTrait ()
 Add a trait type.
 
template<EParadigm Paradigm, class D >
TOutcome< Paradigm > AddDetail ()
 Add a detail class.
 
template<class D >
auto AddDetail ()
 Add a detail class.
 
template<EParadigm Paradigm, class... Cs>
TOutcome< Paradigm > Add ()
 Add component(s) to the fingerprint.
 
template<class... Cs, EParadigm Paradigm = EParadigm::Default>
auto Add ()
 Add component(s) to the fingerprint.
 
FFingerprintoperator+= (std::initializer_list< UScriptStruct * > TraitTypes)
 Add variadic trait types.
 
FFingerprintoperator+= (std::initializer_list< TSubclassOf< UDetail > > DetailClasses)
 Add variadic detail classes.
 
FFingerprintoperator+= (const FFingerprint &Fingerprint)
 Add a fingerprint specification.
 
template<typename AllocatorT >
FFingerprintoperator+= (const TArray< UScriptStruct *, AllocatorT > &TraitTypes)
 Add an array of trait types.
 
template<typename AllocatorT >
FFingerprintoperator+= (const TArray< TSubclassOf< UDetail >, AllocatorT > &DetailClasses)
 Add an array of detail classes.
 
template<typename AllocatorT >
FFingerprintoperator+= (const TArray< UDetail *, AllocatorT > &InDetails)
 Add active details from an array.
 
FFingerprintoperator+= (UScriptStruct *TraitType)
 Add a single trait type.
 
FFingerprintoperator+= (TSubclassOf< UDetail > DetailClass)
 Add a single detail class.
 
Removal
template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > Remove (UScriptStruct *const TraitType)
 Remove a trait type from the fingerprint specification.
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > Remove (const TSubclassOf< UDetail > DetailClass)
 Remove a detail class from the fingerprint specification.
 
template<EParadigm Paradigm, typename T >
TOutcome< Paradigm > RemoveTrait ()
 Remove a trait type from a fingerprint.
 
template<typename T >
auto RemoveTrait ()
 Remove a trait type from a fingerprint.
 
template<EParadigm Paradigm, class D >
TOutcome< Paradigm > RemoveDetail ()
 Remove a detail class from a fingerprint.
 
template<class D >
auto RemoveDetail ()
 Remove a detail class from a fingerprint.
 
template<EParadigm Paradigm, class... Cs>
TOutcome< Paradigm > Remove ()
 Remove component(s) from the fingerprint.
 
template<class... Cs, EParadigm Paradigm = EParadigm::Default>
auto Remove ()
 Remove component(s) from the fingerprint.
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > RemoveAllTraits ()
 Remove all of the traits (if any).
 
template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > RemoveAllDetails ()
 Remove all of the details (if any).
 
FFingerprintoperator-= (UScriptStruct *const TraitType)
 Remove a trait type from the fingerprint.
 
FFingerprintoperator-= (const TSubclassOf< UDetail > DetailClass)
 Remove a detail class from a fingerprint.
 
Search
bool Contains (const UScriptStruct *const TraitType) const
 Check whether a fingerprint contains a trait specification.
 
bool Contains (const TSubclassOf< UDetail > DetailClass) const
 Check whether a fingerprint contains a detail specification.
 
bool ContainsTrait (const UScriptStruct *const TraitType) const
 Check whether a fingerprint contains a trait specification.
 
bool ContainsDetail (const TSubclassOf< UDetail > DetailClass) const
 Check whether a fingerprint contains a detail specification.
 
template<typename T >
bool ContainsTrait () const
 Check whether a fingerprint contains a trait specification.
 
template<class D >
bool ContainsDetail () const
 Check whether a fingerprint contains a detail specification.
 
template<typename ... Cs>
bool Contains () const
 Check whether a fingerprint contains a component specification.
 

Static Public Member Functions

template<typename ... Ts>
static FFingerprint Make (const EFlagmark InFlagmark=FM_None)
 Make a fingerprint with components and an optional boot filter.
 

Static Public Attributes

static const FFingerprint Zero
 The all-zeroed fingerprint.
 

Friends

class UBelt
 
class AMechanism
 
class UApparatusFunctionLibrary
 
class UChunk
 
struct FSubjectHandle
 
struct FFilter
 
uint32 GetTypeHash (const FFingerprint &Fingerprint)
 Get the hash of a fingerprint.
 
FArchive & operator<< (FArchive &Ar, FFingerprint &InFingerprint)
 Serialization operator.
 

Detailed Description

The traits/details fingerprint.

Member Typedef Documentation

◆ DetailsType

The type of details array.

◆ TraitsType

The type of traits array.

Constructor & Destructor Documentation

◆ FFingerprint() [1/16]

FFingerprint::FFingerprint ( const int32  InFlagmark = FM_None)
inline

Construct an empty fingerprint with an optional boot state.

◆ FFingerprint() [2/16]

FFingerprint::FFingerprint ( const TSubclassOf< UDetail DetailClass,
const int32  InFlagmark = FM_None 
)
inline

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

◆ FFingerprint() [3/16]

FFingerprint::FFingerprint ( UScriptStruct *const  TraitType,
const int32  InFlagmark = FM_None 
)
inline

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

◆ FFingerprint() [4/16]

template<typename AllocatorT >
FFingerprint::FFingerprint ( const TArray< UDetail *, AllocatorT > &  InDetailClasses,
const int32  InFlagmark = FM_None 
)
inline

Construct a fingerprint from an array of details and an optional boot state.

◆ FFingerprint() [5/16]

template<typename AllocatorT >
FFingerprint::FFingerprint ( const TArray< TSubclassOf< UDetail >, AllocatorT > &  InDetailClasses,
const int32  InFlagmark = FM_None 
)
inline

Construct a fingerprint from an array of detail classes and an optional boot state.

◆ FFingerprint() [6/16]

template<typename AllocatorTA , typename AllocatorTB >
FFingerprint::FFingerprint ( const TArray< UScriptStruct *, AllocatorTA > &  InTraitTypes,
const TArray< TSubclassOf< UDetail >, AllocatorTB > &  InDetailClasses,
const int32  InFlagmark = FM_None 
)
inline

Construct a fingerprint from arrays of detail classes and trait types and also an optional boot state.

◆ FFingerprint() [7/16]

FFingerprint::FFingerprint ( std::initializer_list< UScriptStruct * >  InTraitTypes,
std::initializer_list< TSubclassOf< UDetail > >  InDetailClasses,
const int32  InFlagmark = FM_None 
)
inline

Construct a fingerprint from initializer lists of trait types and detail classes and also an optional boot state.

◆ FFingerprint() [8/16]

FFingerprint::FFingerprint ( FFingerprint &&  InFingerprint)
inline

Move-construct a new fingerprint.

◆ FFingerprint() [9/16]

FFingerprint::FFingerprint ( const FFingerprint InFingerprint)
inline

Construct a fingerprint as a copy of another one.

◆ FFingerprint() [10/16]

template<typename ... Ts>
FFingerprint::FFingerprint ( TFingerprint< Ts... > &&  InFingerprint)
inline

Move-construct from a templated fingerprint.

◆ FFingerprint() [11/16]

FFingerprint::FFingerprint ( FTraitmark &&  InTraitmark,
const int32  InFlagmark = FM_None 
)
inline

Construct a new fingerprint while moving a traitmark and a flagmark.

◆ FFingerprint() [12/16]

FFingerprint::FFingerprint ( FDetailmark &&  InDetailmark,
const int32  InFlagmark = FM_None 
)
inline

Construct a new fingerprint while moving a detailmark and a flagmark.

◆ FFingerprint() [13/16]

FFingerprint::FFingerprint ( FTraitmark &&  InTraitmark,
FDetailmark &&  InDetailmark,
const int32  InFlagmark = FM_None 
)
inline

Construct a new fingerprint while moving a traitmark and a detailmark.

◆ FFingerprint() [14/16]

FFingerprint::FFingerprint ( const FTraitmark InTraitmark,
const int32  InFlagmark = FM_None 
)
inline

Construct a new fingerprint with a traitmark and a flagmark.

◆ FFingerprint() [15/16]

FFingerprint::FFingerprint ( const FDetailmark InDetailmark,
const int32  InFlagmark = FM_None 
)
inline

Construct a new fingerprint with a detailmark and a flagmark.

◆ FFingerprint() [16/16]

FFingerprint::FFingerprint ( const FTraitmark InTraitmark,
const FDetailmark InDetailmark,
const int32  InFlagmark = FM_None 
)
inline

Construct a new fingerprint with a traitmark and a detailmark.

Member Function Documentation

◆ Add() [1/12]

template<EParadigm Paradigm, class... Cs>
TOutcome< Paradigm > FFingerprint::Add ( )
inline

Add component(s) to the fingerprint.

Templated paradigm version.

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

◆ Add() [2/12]

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

Add component(s) to the fingerprint.

Templated version.

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

◆ Add() [3/12]

template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > FFingerprint::Add ( const FFingerprint InFingerprint)
inline

Add a fingerprint.

Parameters
InFingerprintThe fingerprint to add.
Returns
The outcome of the operation.
EApparatusStatus::Noop if nothing was actually changed.

◆ Add() [4/12]

template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > FFingerprint::Add ( const FFingerprint InFingerprint,
const EFlagmark  InFlagmark 
)
inline

Add a fingerprint with a flagmark override.

Template Parameters
ParadigmThe paradigm to work under.
Parameters
InFingerprintThe fingerprint to add.
InFlagmarkThe flagmark to add.
Returns
The outcome of the operation.
EApparatusStatus::Noop if nothing was actually changed.

◆ Add() [5/12]

template<EParadigm Paradigm = EParadigm::Default, typename AllocatorT = FDefaultAllocator>
TOutcome< Paradigm > FFingerprint::Add ( const TArray< TSubclassOf< UDetail >, AllocatorT > &  InDetailClasses,
const EFlagmark  InFlagmark = FM_None 
)
inline

Add an arrary of detail classes and an optional flagmark.

Template Parameters
ParadigmThe paradigm to work under.
AllocatorTThe type of array allocator to use.
Parameters
InDetailClassesThe detail classes to add.
InFlagmarkThe flagmark to add.
Returns
The status of the operation.

◆ Add() [6/12]

template<EParadigm Paradigm = EParadigm::Default, typename AllocatorT = FDefaultAllocator>
TOutcome< Paradigm > FFingerprint::Add ( const TArray< UDetail *, AllocatorT > &  InDetails,
const EFlagmark  InFlagmark = FM_None 
)
inline

Add an array of details and an optional flagmark.

Only the enabled details get actually added.

Template Parameters
ParadigmThe paradigm to work under.
AllocatorTThe type of array allocator.
Parameters
InDetailsThe details to add. Only the active ones get actually added.
InFlagmarkThe flagmark to add.
Returns
The status of the operation.
EApparatusStatus::Noop Nothing was actually performed.

◆ Add() [7/12]

template<EParadigm Paradigm = EParadigm::Default, typename AllocatorT = FDefaultAllocator>
TOutcome< Paradigm > FFingerprint::Add ( const TArray< UScriptStruct *, AllocatorT > &  InTraitTypes,
const EFlagmark  InFlagmark = FM_None 
)
inline

Add an array of traits and a flagmark specification.

Template Parameters
ParadigmThe paradigm to work under.
AllocatorTThe type of the array allocator.
Parameters
InTraitTypesThe traits to add.
InFlagmarkThe flagmark to add.
Returns
The status of the operation.

◆ Add() [8/12]

template<EParadigm Paradigm = EParadigm::Default, typename TraitsExtractorT = void>
TOutcome< Paradigm > FFingerprint::Add ( const TraitsExtractorT &  InTraits,
const EFlagmark  InFlagmark = FM_None 
)
inline

Add generic traits and a boot state specification.

Template Parameters
ParadigmThe paradigm to work under.
TraitsExtractorTThe traits extractor container type.
Parameters
InTraitsThe extracted traits to add.
InFlagmarkThe flagmark to add.
Returns
The status of the operation.
EApparatusStatus::Noop if nothing was actually changed.

◆ Add() [9/12]

template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > FFingerprint::Add ( const TSubclassOf< UDetail DetailClass,
const EFlagmark  InFlagmark = FM_None 
)
inline

Add a detail class and a flagmark to the fingerprint.

Template Parameters
ParadigmThe paradigm to work under.
Parameters
DetailClassThe class of the detail to add.
InFlagmarkThe flagmark to add.
Returns
The status of the operation.
EApparatusStatus::Noop if nothing was actually changed.

◆ Add() [10/12]

template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > FFingerprint::Add ( std::initializer_list< TSubclassOf< UDetail > >  DetailClasses)
inline

Add detail classes to the fingerprint.

Template Parameters
ParadigmThe paradigm to work under.
Parameters
DetailClassesThe detail classes to add.
Returns
The outcome of the operation.

◆ Add() [11/12]

template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > FFingerprint::Add ( std::initializer_list< UScriptStruct * >  TraitTypes)
inline

Add trait types to the fingerprint.

Template Parameters
ParadigmThe paradigm to work under.
Parameters
TraitTypesThe trait types to add.
Returns
The outcome of the operation.

◆ Add() [12/12]

template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > FFingerprint::Add ( UScriptStruct *const  TraitType,
const EFlagmark  InFlagmark = FM_None 
)
inline

Add a trait type and a flagmark to the fingerprint.

Template Parameters
ParadigmThe paradigm to work under.
Parameters
TraitTypeThe type of the trait to add.
InFlagmarkThe flagmark to add.
Returns
The status of the operation.
EApparatusStatus::Noop if nothing was actually changed.

◆ AddDetail() [1/2]

template<EParadigm Paradigm, class D >
TOutcome< Paradigm > FFingerprint::AddDetail ( )
inline

Add a detail class.

Templated version with a paradigm.

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

◆ AddDetail() [2/2]

template<class D >
auto FFingerprint::AddDetail ( )
inline

Add a detail class.

Templated version.

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

◆ AddToFlagmark()

template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm, EFlagmark > FFingerprint::AddToFlagmark ( const EFlagmark  InFlagmark,
const std::memory_order  MemoryOrder = std::memory_order_release 
)
inline

Add flags to the flagmark.

The method is atomic and thread-safe.

Template Parameters
ParadigmThe paradigm to work under.
Parameters
InFlagmarkThe flags to add with a binary "or".
MemoryOrderThe memory order to use for the 'fetch or' operation.
Returns
The previous flagmark.
See also
SetFlag()

◆ AddToFlagmark_Status()

EApparatusStatus FFingerprint::AddToFlagmark_Status ( const EFlagmark  InFlagmark)
inline

Add flags to the flagmark.

Status version.

The method is atomic and thread-safe.

Template Parameters
ParadigmTThe type of the paradigm to work under.
Parameters
InFlagmarkThe flags to add with a binary "or".
Returns
The previous flagmark.
See also
AddToFlagmark()

◆ AddTrait() [1/2]

template<EParadigm Paradigm, typename T >
TOutcome< Paradigm > FFingerprint::AddTrait ( )
inline

Add a trait type.

Templated paradigm version.

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

◆ AddTrait() [2/2]

template<typename T >
TOutcome< EParadigm::Default > FFingerprint::AddTrait ( )
inline

Add a trait type.

Templated version.

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

◆ CalcHash()

uint32 FFingerprint::CalcHash ( ) const
inline

Calculate the hash sum of the fingerprint.

The results are cached internally.

This method is thread-safe for solid state subjects, since their hash won't actually change.

◆ Contains() [1/3]

template<typename ... Cs>
bool FFingerprint::Contains ( ) const
inline

Check whether a fingerprint contains a component specification.

Template Parameters
CsThe types/classes of components to check for.
Returns
Returns true if all of the components are within the fingerprint.

◆ Contains() [2/3]

bool FFingerprint::Contains ( const TSubclassOf< UDetail DetailClass) const
inline

Check whether a fingerprint contains a detail specification.

◆ Contains() [3/3]

bool FFingerprint::Contains ( const UScriptStruct *const  TraitType) const
inline

Check whether a fingerprint contains a trait specification.

◆ ContainsDetail() [1/2]

template<class D >
bool FFingerprint::ContainsDetail ( ) const
inline

Check whether a fingerprint contains a detail specification.

Templated version.

See also
Contains(const TSubclassOf<UDetail>), Contains<D>()

◆ ContainsDetail() [2/2]

bool FFingerprint::ContainsDetail ( const TSubclassOf< UDetail DetailClass) const
inline

Check whether a fingerprint contains a detail specification.

Deprecated:
since 1.23 The method was renamed. Just use the 'Contains' variant, please.

◆ ContainsTrait() [1/2]

template<typename T >
bool FFingerprint::ContainsTrait ( ) const
inline

Check whether a fingerprint contains a trait specification.

Templated version.

See also
Contains(const UScriptStruct* const), Contains<T>()

◆ ContainsTrait() [2/2]

bool FFingerprint::ContainsTrait ( const UScriptStruct *const  TraitType) const
inline

Check whether a fingerprint contains a trait specification.

Deprecated:
since 1.23 The method was renamed. Just use the 'Contains' variant, please.

◆ DetailAt()

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

Get a detail by its index.

◆ DetailsMatch()

bool FFingerprint::DetailsMatch ( const FFilter Filter) const
inline

Check if the fingerprint's details part match a filter.

◆ DetailsNum()

int32 FFingerprint::DetailsNum ( ) const
inline

The number of details in the fingerprint.

◆ FindDetailsMappingFrom() [1/4]

EApparatusStatus FFingerprint::FindDetailsMappingFrom ( const FFingerprint Fingerprint,
TArray< int32 > &  OutMapping 
) const
inline

Get an indexing mapping from another fingerprint.

Parameters
FingerprintA fingerprint to get a mapping from.
OutMappingThe resulting mapping.

◆ FindDetailsMappingFrom() [2/4]

EApparatusStatus FFingerprint::FindDetailsMappingFrom ( const FFingerprint Fingerprint,
TArray< TArray< int32 > > &  OutMapping 
) const
inline

Get a detail indexing multi-mapping from another fingerprint.

Parameters
FingerprintA fingerprint to get a mapping from.
OutMappingThe resulting mapping.

◆ FindDetailsMappingFrom() [3/4]

EApparatusStatus FFingerprint::FindDetailsMappingFrom ( const TArray< TSubclassOf< UDetail > > &  InDetailClasses,
TArray< int32 > &  OutMapping 
) const
inline

Get an indexing mapping from another fingerprint defined by an array of details.

Parameters
InDetailClassesA fingerprint to get a mapping from.
OutMappingThe resulting mapping.

◆ FindDetailsMappingFrom() [4/4]

EApparatusStatus FFingerprint::FindDetailsMappingFrom ( const TArray< TSubclassOf< UDetail > > &  InDetailClasses,
TArray< TArray< int32 > > &  OutMapping 
) const
inline

Get an indexing multi-mapping from another fingerprint defined by an array of details.

Parameters
InDetailClassesA fingerprint to get a mapping from.
OutMappingThe resulting two-dimensional multi-mapping.
Returns
The status of the operation.

◆ FindDetailsMappingTo() [1/2]

EApparatusStatus FFingerprint::FindDetailsMappingTo ( const FFingerprint Fingerprint,
TArray< int32 > &  OutMapping 
) const
inline

Get an indexing details mapping to another fingerprint.

Parameters
FingerprintA fingerprint to get the details mapping to.
OutMappingThe resulting mapping.

◆ FindDetailsMappingTo() [2/2]

EApparatusStatus FFingerprint::FindDetailsMappingTo ( const FFingerprint Fingerprint,
TArray< TArray< int32 > > &  OutMapping 
) const
inline

Get an indexing multi-mapping to another fingerprint.

Parameters
FingerprintA fingerprint to get a mapping to.
OutMappingThe resulting mapping.

◆ FindTraitsMappingFrom() [1/3]

EApparatusStatus FFingerprint::FindTraitsMappingFrom ( const FFingerprint Fingerprint,
TArray< int32 > &  OutMapping 
) const
inline

Get an indexing mapping from another fingerprint's traits.

Parameters
FingerprintA fingerprint to get a mapping from.
OutMappingThe resulting traits mapping.

◆ FindTraitsMappingFrom() [2/3]

EApparatusStatus FFingerprint::FindTraitsMappingFrom ( const FTraitmark InTraitmark,
TArray< int32 > &  OutMapping 
) const
inline

Get an indexing mapping from another traitmark's traits.

Parameters
InTraitmarkA traitmark to get a mapping from.
OutMappingThe resulting traits mapping.

◆ FindTraitsMappingFrom() [3/3]

void FFingerprint::FindTraitsMappingFrom ( const TArray< UScriptStruct * > &  InTraitmark,
TArray< int32 > &  OutMapping 
) const
inline

Get an indexing mapping from another traitmark defined by an array of traits.

Parameters
InTraitmarkA traitmark to get a mapping from.
OutMappingThe resulting mapping.

◆ FindTraitsMappingTo() [1/2]

EApparatusStatus FFingerprint::FindTraitsMappingTo ( const FFingerprint InFingerprint,
TArray< int32 > &  OutMapping 
) const
inline

Get an indexing traits mapping to another traitmark.

Parameters
InFingerprintA fingerprint to get the traits mapping to.
OutMappingThe resulting mapping.

◆ FindTraitsMappingTo() [2/2]

EApparatusStatus FFingerprint::FindTraitsMappingTo ( const FTraitmark InTraitmark,
TArray< int32 > &  OutMapping 
) const
inline

Get an indexing traits mapping to another traitmark.

Parameters
InTraitmarkA traitmark to get the traits mapping to.
OutMappingThe resulting mapping.

◆ FlagmarkMatches()

bool FFingerprint::FlagmarkMatches ( const FFilter Filter) const
inline

Check if the fingerprint's flagmark matches a filter.

◆ GetDetailmark()

const FDetailmark & FFingerprint::GetDetailmark ( ) const
inline

Get the detailmark part of the fingerprint.

◆ GetDetails()

const DetailsType & FFingerprint::GetDetails ( ) const
inline

Get the details of the fingerprint.

◆ GetDetailsMask()

const FBitMask & FFingerprint::GetDetailsMask ( ) const
inline

Get the details mask of the fingerprint.

◆ GetFlagmark()

EFlagmark FFingerprint::GetFlagmark ( const std::memory_order  MemoryOrder = std::memory_order_acquire) const
inline

Get the flagmark.

Parameters
MemoryOrderThe memory order to use for the load.
Returns
The current flagmark of the fingerprint.
See also
SetFlagmark() HasFlag()

◆ GetTraitmark()

const FTraitmark & FFingerprint::GetTraitmark ( ) const
inline

Get the traitmark part of the fingerprint.

◆ GetTraits()

const TraitsType & FFingerprint::GetTraits ( ) const
inline

Get the traits of the fingerprint.

◆ GetTraitsMask()

const FBitMask & FFingerprint::GetTraitsMask ( ) const
inline

Get the traits mask of the fingerprint.

◆ HasFlag()

bool FFingerprint::HasFlag ( const EFlagmarkBit  Flag,
const std::memory_order  MemoryOrder = std::memory_order_acquire 
) const
inline

Get the flag state of the fingerprint.

Parameters
FlagThe flag to examine.
MemoryOrderThe memory order to use for the 'load' operation.
Returns
The current state of the flag.
See also
SetFlag()

◆ Identical()

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

Compare two fingerprints for equality.

Editor-friendly method.

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

◆ IndexOf() [1/2]

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

Get the index of a specific detail class.

Also supports parent classes.

Parameters
DetailClassThe detail class to look for.

◆ IndexOf() [2/2]

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

Get the index of a specific trait type.

◆ IndicesOf()

EApparatusStatus FFingerprint::IndicesOf ( const TSubclassOf< UDetail DetailClass,
TArray< int32 > &  OutIndices 
) const
inline

Get the indices of a specific detail class.

Also supports searches by the parental classes.

Parameters
DetailClassThe detail class to search for. May also be a base class.
OutIndicesThe indices array to output to.
Returns
The status of the operation.
EApparatusStatus::Noop If there are no such details.

◆ IsBooted()

bool FFingerprint::IsBooted ( const std::memory_order  MemoryOrder = std::memory_order_acquire) const
inline

Check if the fingerprint corresponds to a booted entity.

This examination is atomic and thread-safe.

Parameters
MemoryOrderThe memory order to use for the 'load' operation.
Returns
The state of being booted.

◆ IsEmpty()

bool FFingerprint::IsEmpty ( ) const
inline

Check if the fingerprint is completely empty.

◆ IsStale()

bool FFingerprint::IsStale ( const std::memory_order  MemoryOrder = std::memory_order_acquire) const
inline

Check if the fingerprint corresponds to a stale entity.

This examination is atomic and thread-safe.

Parameters
MemoryOrderThe memory order to use for the 'load' operation.
Returns
The state of being stale.

◆ Make()

template<typename ... Ts>
static FFingerprint FFingerprint::Make ( const EFlagmark  InFlagmark = FM_None)
inlinestatic

Make a fingerprint with components and an optional boot filter.

Template Parameters
TsThe types of components to construct with.
Parameters
InFlagmarkThe flagmark to apply.
Returns
The resulting fingerprint.

◆ Matches() [1/6]

bool FFingerprint::Matches ( const EFlagmark  IncludingFlagmark,
const EFlagmark  ExcludingFlagmark = FM_None 
) const
inline

Check if the fingerprint matches the flagmarks used as filters.

◆ Matches() [2/6]

bool FFingerprint::Matches ( const FDetailmark InDetailmark) const
inline

Check if the fingerprint matches a detailmark acting as a filter.

◆ Matches() [3/6]

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

Check if the fingerprint matches a filter.

◆ Matches() [4/6]

bool FFingerprint::Matches ( const FFilter Filter,
const EFlagmark  IncludingFlagmarkOverride,
const EFlagmark  ExcludingFlagmarkOverride 
) const
inline

Check if the fingerprint matches a filter with flagmarks filtering overriden.

◆ Matches() [5/6]

bool FFingerprint::Matches ( const FFingerprint InFingerprint) const
inline

Check if the fingerprint matches another fingerprint acting as a filter.

◆ Matches() [6/6]

bool FFingerprint::Matches ( const FTraitmark InTraitmark) const
inline

Check if the fingerprint matches a traitmark acting as a filter.

◆ operator bool()

FFingerprint::operator bool ( ) const
inline

Check if a fingerprint is viable and has any effect.

◆ operator const FDetailmark &()

FFingerprint::operator const FDetailmark & ( ) const
inline

Convert a fingerprint to a detailmark.

◆ operator const FTraitmark &()

FFingerprint::operator const FTraitmark & ( ) const
inline

Convert a fingerprint to a traitmark.

◆ operator DetailsType()

FFingerprint::operator DetailsType ( ) const
inlineexplicit

Convert to an array of detail classes.

◆ operator TraitsType()

FFingerprint::operator TraitsType ( ) const
inlineexplicit

Convert to an array of trait types.

◆ operator!=()

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

Compare two fingerprint for inequality.

◆ operator+=() [1/9]

FFingerprint & FFingerprint::operator+= ( const EFlagmark  InFlagmark)
inline

Add flagmark to the fingerprint.

◆ operator+=() [2/9]

FFingerprint & FFingerprint::operator+= ( const FFingerprint Fingerprint)
inline

Add a fingerprint specification.

◆ operator+=() [3/9]

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

Add an array of detail classes.

◆ operator+=() [4/9]

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

Add active details from an array.

◆ operator+=() [5/9]

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

Add an array of trait types.

◆ operator+=() [6/9]

FFingerprint & FFingerprint::operator+= ( std::initializer_list< TSubclassOf< UDetail > >  DetailClasses)
inline

Add variadic detail classes.

◆ operator+=() [7/9]

FFingerprint & FFingerprint::operator+= ( std::initializer_list< UScriptStruct * >  TraitTypes)
inline

Add variadic trait types.

◆ operator+=() [8/9]

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

Add a single detail class.

◆ operator+=() [9/9]

FFingerprint & FFingerprint::operator+= ( UScriptStruct *  TraitType)
inline

Add a single trait type.

◆ operator-=() [1/3]

FFingerprint & FFingerprint::operator-= ( const EFlagmark  InFlagmark)
inline

Remove flagmark from the fingerprint.

◆ operator-=() [2/3]

FFingerprint & FFingerprint::operator-= ( const TSubclassOf< UDetail DetailClass)
inline

Remove a detail class from a fingerprint.

◆ operator-=() [3/3]

FFingerprint & FFingerprint::operator-= ( UScriptStruct *const  TraitType)
inline

Remove a trait type from the fingerprint.

◆ operator=() [1/9]

FFingerprint & FFingerprint::operator= ( const FDetailmark InDetailmark)
inline

Set the fingerprint equal to a detailmark.

◆ operator=() [2/9]

FFingerprint & FFingerprint::operator= ( const FFingerprint Fingerprint)
inline

Set the fingerprint equal to another fingerprint.

◆ operator=() [3/9]

FFingerprint & FFingerprint::operator= ( const FTraitmark InTraitmark)
inline

Set the fingerprint equal to a traitmark.

◆ operator=() [4/9]

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

Set a fingerprint equal to an array of detail classes.

The flagmark is preserved.

◆ operator=() [5/9]

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

Set a fingerprint equal to an array of details.

The flagmark is preserved.

◆ operator=() [6/9]

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

Set a fingerprint equal to an array of trait types.

The flagmark is preserved.

◆ operator=() [7/9]

FFingerprint & FFingerprint::operator= ( FDetailmark &&  InDetailmark)
inline

Move a detailmark to the fingerprint.

◆ operator=() [8/9]

FFingerprint & FFingerprint::operator= ( FFingerprint &&  Fingerprint)
inline

Move a fingerprint to this one.

◆ operator=() [9/9]

FFingerprint & FFingerprint::operator= ( FTraitmark &&  InTraitmark)
inline

Move a traitmark to the fingerprint.

◆ operator==()

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

Compare two fingerprints for equality.

◆ PostSerialize()

void FFingerprint::PostSerialize ( const FArchive &  Archive)
inline

Post-serialize the fingerprint updating its caches.

◆ Remove() [1/4]

template<EParadigm Paradigm, class... Cs>
TOutcome< Paradigm > FFingerprint::Remove ( )
inline

Remove component(s) from the fingerprint.

Paradigm version.

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

◆ Remove() [2/4]

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

Remove component(s) from the fingerprint.

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

◆ Remove() [3/4]

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

Remove a detail class from the fingerprint specification.

Even the base-class-matching details get removed. The result is such that the fingerprint won't contain that passed detail class anymore.

Template Parameters
ParadigmThe paradigm to work under.
Parameters
DetailClassA detail class to remove. May be a base class. If nullptr, nothing is actually performed.
Returns
The outcome of the operation.

◆ Remove() [4/4]

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

Remove a trait type from the fingerprint specification.

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

◆ RemoveAllDetails()

template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > FFingerprint::RemoveAllDetails ( )
inline

Remove all of the details (if any).

Template Parameters
ParadigmThe paradigm to work under.
Returns
The outcome of the operation.
EApparatusStatus::Noop If there is already no details in the fingerprint.

◆ RemoveAllTraits()

template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > FFingerprint::RemoveAllTraits ( )
inline

Remove all of the traits (if any).

Template Parameters
ParadigmThe paradigm to work under.
Returns
The outcome of the operation.
EApparatusStatus::Noop If there is already no traits in the fingerprint.

◆ RemoveDetail() [1/2]

template<EParadigm Paradigm, class D >
TOutcome< Paradigm > FFingerprint::RemoveDetail ( )
inline

Remove a detail class from a fingerprint.

Templated paradigm version.

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

◆ RemoveDetail() [2/2]

template<class D >
auto FFingerprint::RemoveDetail ( )
inline

Remove a detail class from a fingerprint.

Templated version.

Template Parameters
DThe detail class to remove.
Returns
The status of the operation.
See also
Remove<D>()

◆ RemoveFromFlagmark()

template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm, EFlagmark > FFingerprint::RemoveFromFlagmark ( const EFlagmark  InFlagmark,
const std::memory_order  MemoryOrder = std::memory_order_release 
)
inline

Remove flags from the flagmark.

The method is atomic and thread-safe.

Template Parameters
ParadigmThe paradigm to work under.
Parameters
InFlagmarkThe flags to remove.
MemoryOrderThe memory order to use for the 'fetch and' operation.
Returns
The previous flagmark.
See also
SetFlag(), AddToFlagmark(const EFlagmark)

◆ RemoveFromFlagmark_Status()

EApparatusStatus FFingerprint::RemoveFromFlagmark_Status ( const EFlagmark  InFlagmark)
inline

Remove flags from the flagmark.

Status version.

The method is atomic and thread-safe.

Parameters
InFlagmarkThe flags to remove.
Returns
The previous flagmark.
See also
RemoveFromFlagmark(const EFlagmark), AddFromFlagmark_Status(const EFlagmark)

◆ RemoveTrait() [1/2]

template<EParadigm Paradigm, typename T >
TOutcome< Paradigm > FFingerprint::RemoveTrait ( )
inline

Remove a trait type from a fingerprint.

Templated paradigm version.

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

◆ RemoveTrait() [2/2]

template<typename T >
auto FFingerprint::RemoveTrait ( )
inline

Remove a trait type from a fingerprint.

Templated version.

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

◆ Reset()

template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > FFingerprint::Reset ( const EFlagmark  InFlagmark = FM_None)
inline

Clear the fingerprint without any deallocations.

Template Parameters
ParadigmThe paradigm to work under.
Parameters
InFlagmarkThe flagmark to re-apply.
Returns
The outcome of the operation.
EApparatusStatus::Noop is nothing was actually changed at all.

◆ Serialize()

bool FFingerprint::Serialize ( FArchive &  Archive)
inline

Serialize the fingerprint to the archive.

◆ Set() [1/9]

template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > FFingerprint::Set ( const FDetailmark InDetailmark,
const bool  bPreserveFlagmark = true 
)
inline

Set the fingerprint equal to a detailmark.

Template Parameters
ParadigmThe paradigm to work under.
Parameters
InDetailmarkThe detailmark to set to.
bPreserveFlagmarkShould existing flagmark be preserved.
Returns
The status of the operation.
EApparatusStatus::Noop if nothing was actually performed.

◆ Set() [2/9]

template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > FFingerprint::Set ( const FFingerprint InFingerprint)
inline

Set the fingerprint equal to another one.

Template Parameters
ParadigmThe paradigm to work under.
Returns
The outcome of the operation.
EApparatusStatus::Noop If nothing was actually changed.

◆ Set() [3/9]

template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > FFingerprint::Set ( const FTraitmark InTraitmark,
const bool  bPreserveFlagmark = true 
)
inline

Set the fingerprint equal to a traitmark.

Template Parameters
ParadigmThe paradigm to work under.
Parameters
InTraitmarkThe traitmark to set to.
bPreserveFlagmarkShould existing flagmark be preserved.
Returns
The status of the operation.
EApparatusStatus::Noop if nothing was actually performed.

◆ Set() [4/9]

template<EParadigm Paradigm = EParadigm::Default, typename AllocatorT = FDefaultAllocator>
TOutcome< Paradigm > FFingerprint::Set ( const TArray< TSubclassOf< UDetail >, AllocatorT > &  InDetailClasses,
const EFlagmark  InFlagmark 
)
inline

Set a fingerprint to an array of detail classes and a flagmark.

Template Parameters
ParadigmThe paradigm to work under.
AllocatorTThe allocator of the array container.
Parameters
InDetailClassesThe details to set to.
InFlagmarkThe flagmark to set to.
Returns
The outcome of the operation.

◆ Set() [5/9]

template<EParadigm Paradigm = EParadigm::Default, typename AllocatorT = FDefaultAllocator>
TOutcome< Paradigm > FFingerprint::Set ( const TArray< UDetail *, AllocatorT > &  InDetails,
const EFlagmark  InFlagmark 
)
inline

Set a fingerprint to an array of active-tested details and a flagmark.

Template Parameters
ParadigmThe paradigm to work under.
AllocatorTThe allocator of the array container.
Parameters
InDetailsThe details to set to.
InFlagmarkThe flagmark to set to.
Returns
The outcome of the operation.

◆ Set() [6/9]

template<EParadigm Paradigm = EParadigm::Default, typename AllocatorT = FDefaultAllocator>
TOutcome< Paradigm > FFingerprint::Set ( const TArray< UScriptStruct *, AllocatorT > &  InTraits,
const EFlagmark  InFlagmark 
)
inline

Set the fingerprint to an array of traits and a flagmark.

Template Parameters
ParadigmThe paradigm to work under.
AllocatorTThe allocator of the array container.
Parameters
InTraitsThe traits to set to.
InFlagmarkThe flagmark to set to.
Returns
The outcome of the operation.

◆ Set() [7/9]

template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > FFingerprint::Set ( FDetailmark &&  InDetailmark,
const bool  bPreserveFlagmark = true 
)
inline

Move a detailmark to the fingerprint.

Template Parameters
ParadigmThe paradigm to work under.
Parameters
InDetailmarkThe detailmark to set to.
bPreserveFlagmarkShould existing flagmark be preserved.
Returns
The status of the operation.
EApparatusStatus::Noop if nothing was actually performed.

◆ Set() [8/9]

template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > FFingerprint::Set ( FFingerprint &&  InFingerprint)
inline

Move another fingerprint to this one.

Template Parameters
ParadigmThe paradigm to work under.
Parameters
InFingerprintThe fingerprint to move.
Returns
The outcome of the operation.
EApparatusStatus::Noop If nothing was actually changed.

◆ Set() [9/9]

template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > FFingerprint::Set ( FTraitmark &&  InTraitmark,
const bool  bPreserveFlagmark = true 
)
inline

Move a traitmark to the fingerprint.

Template Parameters
ParadigmThe paradigm to work under.
Parameters
InTraitmarkThe traitmark to set to.
bPreserveFlagmarkShould existing flagmark be preserved.
Returns
The outcome of the operation.
EApparatusStatus::Noop if nothing was actually performed.

◆ SetBooted()

template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm, bool > FFingerprint::SetBooted ( bool  bState = true,
const std::memory_order  MemoryOrder = std::memory_order_release 
)
inline

Set the new active boot state.

Template Parameters
ParadigmThe paradigm to work under.
Parameters
bStateThe boot state to set.
MemoryOrderThe memory order to use for the 'load' and 'compare exchange' operation.
Returns
The previous state of the boot flag.

◆ SetDetailmark() [1/2]

template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > FFingerprint::SetDetailmark ( const FDetailmark InDetailmark)
inline

Set the fingerprint's detailmark equal to a detailmark.

The traitmark is preserved, excluding the boot state.

Template Parameters
ParadigmThe paradigm to work under.
Parameters
InDetailmarkThe detailmark to set to.
Returns
The outcome of the operation.

◆ SetDetailmark() [2/2]

template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > FFingerprint::SetDetailmark ( FDetailmark &&  InDetailmark)
inline

Move a detailmark to the fingerprint's detailmark.

The traitmark and the flagmark are preserved.

Template Parameters
ParadigmThe paradigm to work under.
Parameters
InDetailmarkThe detailmark to move.
Returns
The outcome of the operation.

◆ SetFlag()

template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm, bool > FFingerprint::SetFlag ( const EFlagmarkBit  Flag,
const bool  bState = true,
const std::memory_order  MemoryOrder = std::memory_order_release 
)
inline

Set a flagmark bit to a specific state.

The method is atomic and thread-safe.

Template Parameters
ParadigmThe paradigm to work under.
Parameters
FlagThe flag to set or clear.
bStateThe state to set the flag to.
MemoryOrderThe memory order to use for the 'load' and 'compare_exchange' operations.
Returns
The previous state of the flag.
See also
AddToFlagmark(), HasFlag()

◆ SetFlag_Status()

EApparatusStatus FFingerprint::SetFlag_Status ( const EFlagmarkBit  Flag,
const bool  bState = true 
)
inline

Set a flagmark bit to a specific state.

Status version.

The method is atomic and thread-safe.

Parameters
FlagThe flag to set or clear.
bStateThe state to set the flag to.
Returns
The status of the operation.
See also
AddToFlagmark()

◆ SetFlagmark()

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

Set the new active flagmark.

This operation is atomic and thread-safe.

Template Parameters
ParadigmThe paradigm to work under.
Parameters
InFlagmarkThe flagmark to set to.
MemoryOrderThe memory order to use for the exchange.
Returns
The previous flagmark.
See also
GetFlagmark() SetFlag()

◆ SetFlagmark_Status()

EApparatusStatus FFingerprint::SetFlagmark_Status ( const EFlagmark  InFlagmark)
inline

Set the new active flagmark.

Status version.

This operation is atomic and thread-safe.

Parameters
InFlagmarkThe flagmark to set to.
Returns
The status of the operation.
EApparatusStatus::Noop if nothing was actually changed.
See also
GetFlagmark() SetFlag()

◆ SetFlagmarkMasked()

template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm, EFlagmark > FFingerprint::SetFlagmarkMasked ( const EFlagmark  InFlagmark,
const EFlagmark  InMask,
const std::memory_order  MemoryOrder = std::memory_order_release 
)
inline

Set the new active flagmark to a masked flagmark.

An additional mask argument is used to only change certain bits within the flagmark.

The method is atomic and thread-safe.

Template Parameters
ParadigmThe paradigm to work under.
Parameters
InFlagmarkThe flagmark to set to. Get masked by the second argument.
InMaskThe bit selection to use. Only the set (1) bits get changed.
MemoryOrderThe memory order to use for the compare exchange operation.
Returns
The previous value of the flagmark masked with the passed-in mask.
See also
GetFlagmark(), SetFlagmark(), SetFlag()

◆ SetFlagmarkMasked_Status()

EApparatusStatus FFingerprint::SetFlagmarkMasked_Status ( const EFlagmark  InFlagmark,
const EFlagmark  InMask 
)
inline

Set the new active flagmark to a masked flagmark.

Status version.

An additional mask argument is used to only change certain bits within the flagmark.

The method is atomic and thread-safe.

Parameters
InFlagmarkThe flagmark to set to. Get masked by the second argument.
InMaskThe bit selection to use. Only the set (1) bits get changed.
Returns
The status of the operation.
EApparatusStatus::Noop if nothing was actually changed.
See also
GetFlagmark() SetFlag()

◆ SetTraitmark() [1/2]

template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > FFingerprint::SetTraitmark ( const FTraitmark InTraitmark)
inline

Set the fingerprint's traitmark equal to a traitmark.

Template Parameters
ParadigmThe paradigm to work under.
Parameters
InTraitmarkThe traitmark to set to.
Returns
The outcome of the operation.

◆ SetTraitmark() [2/2]

template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm > FFingerprint::SetTraitmark ( FTraitmark &&  InTraitmark)
inline

Move a traitmark to the fingerprint's traitmark.

Template Parameters
ParadigmThe paradigm to work under.
Parameters
InTraitmarkThe traitmark to move.
Returns
The outcome of the operation.

◆ ToggleFlag()

template<EParadigm Paradigm = EParadigm::Default>
TOutcome< Paradigm, bool > FFingerprint::ToggleFlag ( const EFlagmarkBit  Flag,
const std::memory_order  MemoryOrder = std::memory_order_release 
)
inline

Toggle the state of a flagmark bit.

The method is atomic and thread-safe.

Template Parameters
ParadigmThe paradigm to work under.
Parameters
FlagThe flag to toggle.
MemoryOrderThe memory order to use for the 'load' and 'compare exchange' operation.
Returns
The new state of the flag.
See also
HasFlag(), SetFlag()

◆ ToString()

FString FFingerprint::ToString ( ) const

Convert a fingerprint to a string.

◆ TraitAt()

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

Get a trait by its index.

◆ TraitsMatch()

bool FFingerprint::TraitsMatch ( const FFilter Filter) const
inline

Check if the fingerprint's traits part match a filter.

◆ TraitsNum()

int32 FFingerprint::TraitsNum ( ) const
inline

The number of traits in the fingerprint.

Friends And Related Function Documentation

◆ AMechanism

friend class AMechanism
friend

◆ FFilter

friend struct FFilter
friend

◆ FSubjectHandle

friend struct FSubjectHandle
friend

◆ GetTypeHash

uint32 GetTypeHash ( const FFingerprint Fingerprint)
friend

Get the hash of a fingerprint.

◆ operator<<

FArchive & operator<< ( FArchive &  Ar,
FFingerprint InFingerprint 
)
friend

Serialization operator.

◆ UApparatusFunctionLibrary

friend class UApparatusFunctionLibrary
friend

◆ UBelt

friend class UBelt
friend

◆ UChunk

friend class UChunk
friend

Member Data Documentation

◆ Zero

const FFingerprint FFingerprint::Zero
static

The all-zeroed fingerprint.


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