Apparatus
Version 1.23
ECS data-oriented workflow for Unreal Engine.
|
The main entity in the mechanism, consisting of traits. More...
#include <CommonSubjectHandle.h>
Public Types | |
using | Super = FCommonSubjectHandle |
The base handle type. | |
template<EParadigm Paradigm> | |
using | TTraitVoidPtrResultSecurity = typename std::enable_if< bAllowDirectTraitAccess||IsUnsafe(Paradigm), bool >::type |
The type of a trait void pointer returned by the methods. | |
template<EParadigm Paradigm> | |
using | TTraitVoidPtrResult = typename std::conditional< AllowsChanges, void *, const void * >::type |
The type of a trait void pointer returned by the methods. | |
template<EParadigm Paradigm, typename T > | |
using | TTraitPtrResultSecurity = typename std::enable_if<(bAllowDirectTraitAccess||IsUnsafe(Paradigm)) &&IsTraitType< std::remove_cv_t< T > >(), bool >::type |
Assess the availability of a trait pointer result. | |
template<EParadigm Paradigm, typename T > | |
using | TTraitPtrResult = typename std::conditional< AllowsChanges, std::add_pointer_t< T >, std::add_pointer_t< std::add_const_t< T > > >::type |
The type of a trait pointer returned by the methods. | |
template<EParadigm Paradigm, typename T > | |
using | TTraitRefResultSecurity = typename std::enable_if<(bAllowDirectTraitAccess||IsUnsafe(Paradigm)) &&IsTraitType< std::remove_cv_t< T > >(), bool >::type |
Check the type of a trait reference returned by the methods. | |
template<EParadigm Paradigm, typename T > | |
using | TTraitRefResult = typename std::conditional< bAllowChanges, std::add_lvalue_reference_t< T >, std::add_lvalue_reference_t< std::add_const_t< T > > >::type |
The type of a trait reference returned by the methods. | |
template<class D > | |
using | TDetailPtrResultSecurity = typename std::enable_if< IsDetailClass< std::remove_cv_t< D > >(), bool >::type |
Check the class of a detail. | |
template<class D > | |
using | TDetailPtrResult = typename std::conditional< bAllowChanges, std::add_pointer_t< D >, std::add_pointer_t< std::add_const_t< D > > >::type |
The type of a detail pointer returned by the methods. | |
Public Types inherited from FCommonSubjectHandle | |
typedef FSubjectInfo::MechanismIdType | MechanismIdType |
The type of the unique mechanism identifier. | |
typedef FSubjectInfo::IdType | IdType |
The type of the unique subject identifier. | |
typedef FSubjectInfo::GenerationType | GenerationType |
The type of the subject generation counter. | |
using | NetworkIdType = FSubjectNetworkState::IdType |
The type of the network identifier. | |
Public Member Functions | |
TSubjectHandle & | operator= (TYPE_OF_NULLPTR) |
Clear the subject handle, essentially making it invalid. | |
A Pointer-Like Interface | |
auto | operator-> () const |
Use the handle as a pointer. | |
auto & | operator* () const |
Dereference itself. | |
Validity | |
bool | operator== (TYPE_OF_NULLPTR) const |
Check if the subject handle is invalid and is pointing to a non-existent subject. | |
bool | operator!= (TYPE_OF_NULLPTR) const |
Check if the subject handle is valid and is pointing to an existent subject. | |
Context | |
template<EParadigm Paradigm = EParadigm::Default> | |
TOutcomeIfUnsafeOr< Paradigm, AllowsStructuralChanges > | SetMechanism (AMechanism *const Mechanism) |
Set the mechanism of the subjective. | |
Despawning | |
template<EParadigm Paradigm = EParadigm::Default> | |
TOutcomeIfUnsafeOr< Paradigm, AllowsStructuralChanges > | Despawn () const |
Destroy the subject. | |
template<EParadigm Paradigm = EParadigm::Default> | |
TOutcomeIfUnsafeOr< Paradigm, AllowsChanges > | DespawnDeferred (const bool bHard=true) const |
Destroy the subject. | |
Flagmark | |
template<EParadigm Paradigm = EParadigm::Default> | |
TOutcomeIfUnsafeOr< Paradigm, AllowsChanges, EFlagmark > | SetFlagmark (const EFlagmark Flagmark) const |
Set the flagmark of the subject. | |
template<EParadigm Paradigm = EParadigm::Default> | |
std::enable_if< AllowsChanges||IsUnsafe(Paradigm), EApparatusStatus >::type | SetFlagmark_Status (const EFlagmark Flagmark) const |
Set the flagmark of the subject. | |
template<EParadigm Paradigm = EParadigm::Default> | |
TOutcomeIfUnsafeOr< Paradigm, AllowsChanges, EFlagmark > | SetFlagmarkMasked (const EFlagmark Flagmark, const EFlagmark Mask) const |
Set the flagmark of the subject. | |
template<EParadigm Paradigm = EParadigm::Default> | |
std::enable_if< AllowsChanges||(Paradigm<=EParadigm::Unsafe), EApparatusStatus >::type | SetFlagmarkMasked_Status (const EFlagmark Flagmark, const EFlagmark Mask) const |
Set the flagmark of the subject. | |
template<EParadigm Paradigm = EParadigm::Default> | |
TOutcomeIfUnsafeOr< Paradigm, AllowsChanges, bool > | SetFlag (const EFlagmarkBit Flag, const bool bState=true) const |
Set a single flag for the subject. | |
template<EParadigm Paradigm = EParadigm::Default> | |
std::enable_if< AllowsChanges||(Paradigm<=EParadigm::Unsafe), EApparatusStatus >::type | SetFlag_Status (const EFlagmarkBit Flag, const bool bState=true) const |
Set a single flag for the subject. | |
template<EParadigm Paradigm = EParadigm::Default> | |
TOutcomeIfUnsafeOr< Paradigm, AllowsChanges, EFlagmark > | AddToFlagmark (const EFlagmark Flagmark) const |
Add flags to the flagmark of the subject. | |
template<EParadigm Paradigm = EParadigm::Default> | |
TOutcomeIfUnsafeOr< Paradigm, AllowsChanges, bool > | ToggleFlag (const EFlagmarkBit Flag) const |
Toggle a single flag for the subject. | |
Equality | |
bool | operator== (const FCommonSubjectHandle &InSubjectHandle) const |
Check if the subject handle points to the same subject as the other one. | |
bool | operator!= (const FCommonSubjectHandle &InSubjectHandle) const |
Check if the subject handle points to a different subject than the other one. | |
Traits Data Access | |
template<EParadigm Paradigm = EParadigm::Default> | |
TOutcome< Paradigm, TTraitVoidPtrResult< Paradigm > > | GetTraitPtr (UScriptStruct *const TraitType) const |
Get a pointer to a trait of the subject of a certain type. | |
template<EParadigm Paradigm, typename T , TTraitPtrResultSecurity< Paradigm, T > = 0> | |
TOutcome< Paradigm, TTraitPtrResult< Paradigm, T > > | GetTraitPtr () const |
Get a pointer to a trait of a certain type. | |
template<typename T , EParadigm Paradigm = EParadigm::Default, TTraitPtrResultSecurity< Paradigm, T > = 0> | |
TOutcome< Paradigm, TTraitPtrResult< Paradigm, T > > | GetTraitPtr () const |
Get a pointer to a trait of a certain type. | |
template<EParadigm Paradigm, typename T , TTraitRefResultSecurity< Paradigm, T > = 0> | |
TOutcome< Paradigm, TTraitRefResult< Paradigm, T > > | GetTraitRef () const |
Get a trait from a subject by its type. | |
template<typename T , EParadigm Paradigm = EParadigm::Default, TTraitRefResultSecurity< Paradigm, T > = 0> | |
TOutcome< Paradigm, TTraitRefResult< Paradigm, T > > | GetTraitRef () const |
Get a trait from a subject by its type. | |
Traits Setting | |
template<EParadigm Paradigm = EParadigm::Default> | |
TOutcomeIfUnsafeOr< Paradigm, AllowsStructuralChanges > | SetTrait (UScriptStruct *const TraitType, const void *const TraitData) const |
Set a trait of the subject by its type. | |
template<EParadigm Paradigm = EParadigm::Default, typename T = void> | |
TOutcomeIfUnsafeOr< Paradigm, AllowsStructuralChanges > | SetTrait (const T *const TraitData) const |
Set a trait of the subject by its type. | |
template<EParadigm Paradigm = EParadigm::Default> | |
TOutcomeIfUnsafeOr< Paradigm, AllowsStructuralChanges > | SetTrait (const FTraitRecord &TraitRecord) const |
Set a trait of the subject to a trait record. | |
template<EParadigm Paradigm = EParadigm::Default, typename T = void, typename std::enable_if< IsTraitType< T >(), bool >::type = true> | |
TOutcomeIfUnsafeOr< Paradigm, AllowsStructuralChanges > | SetTrait (const T &Trait) const |
Set a trait of the subject. | |
template<EParadigm Paradigm = EParadigm::Default, typename T = void, typename std::enable_if< IsFlagmarkType< T >(), bool >::type = true> | |
auto | SetTrait (const T &Flagmark) const |
Add a flagmark to the subject. | |
template<EParadigm Paradigm = EParadigm::Default, typename A1 = FDefaultAllocator, typename A2 = FDefaultAllocator, typename T = void> | |
TOutcomeIfUnsafeOr< Paradigm, AllowsStructuralChanges > | SetTraits (const TArray< UScriptStruct *, A1 > &TraitsTypes, const TArray< const T *, A2 > &TraitsData, const bool bLeaveRedundant=true) const |
Set multiple subject traits equal to the supplied list. | |
template<EParadigm Paradigm = EParadigm::Default> | |
TOutcomeIfUnsafeOr< Paradigm, AllowsStructuralChanges > | SetTraits (const FSubjectRecord &SubjectRecord, const bool bLeaveRedundant=true) const |
Set multiple subject traits from a subject record. | |
template<EParadigm Paradigm = EParadigm::Default, typename A1 = FDefaultAllocator, typename A2 = FDefaultAllocator, typename T = void> | |
TOutcome< Paradigm > | OverwriteTraits (const TArray< UScriptStruct *, A1 > &TraitsTypes, const TArray< const T *, A2 > &TraitsData) const |
Overwrite existing subject traits from the array. | |
template<EParadigm Paradigm = EParadigm::Default> | |
TOutcomeIfUnsafeOr< Paradigm, AllowsChanges > | OverwriteTraits (const FSubjectRecord &SubjectRecord) const |
Overwrite existing traits from a subject record. | |
template<EParadigm Paradigm = EParadigm::Default, bool AnyDirectAccess = false> | |
TOutcome< Paradigm > | CopyTraitsTo (const TSubjectHandle< true, AnyDirectAccess, true > &DestinationSubjectHandle) const |
Copy all of the traits of the subject to some other subject. | |
Trait Obtainment | |
template<EParadigm Paradigm = EParadigm::Default, typename T = void, more::enable_if_t< AllowsStructuralChanges||IsUnsafe(Paradigm), bool > = true> | |
TOutcome< Paradigm > | ObtainTrait (UScriptStruct *const TraitType, T *const OutTraitData, const bool bTraitDataInitialized=true) const |
Obtain a trait from the subject by its type. | |
template<EParadigm Paradigm = EParadigm::Default, more::enable_if_t< AllowsStructuralChanges||IsUnsafe(Paradigm), bool > = true> | |
TOutcome< Paradigm > | ObtainTrait (UScriptStruct *const TraitType) const |
Obtain a trait for the subject by its type. | |
template<EParadigm Paradigm = EParadigm::Default, typename T = void, more::enable_if_t< AllowsStructuralChanges||IsUnsafe(Paradigm), bool > = true> | |
TOutcome< Paradigm > | ObtainTrait (T &OutTrait, const bool bTraitDataInitialized=true) const |
Obtain a trait from the subject. | |
template<EParadigm Paradigm, typename T , more::enable_if_t< AllowsStructuralChanges||IsUnsafe(Paradigm), bool > = true> | |
TOutcome< Paradigm, T > | ObtainTrait () const |
Obtain a trait copy from the subject. | |
template<typename T > | |
auto | ObtainTrait () const |
Obtain a trait copy from the subject. | |
template<EParadigm Paradigm = EParadigm::Default, more::enable_if_t<(AllowsStructuralChanges &&AllowsDirectTraitAccess)||IsUnsafe(Paradigm), bool > = true> | |
TOutcome< Paradigm, TTraitVoidPtrResult< Paradigm > > | ObtainTraitPtr (UScriptStruct *const TraitType) const |
Obtain a trait data pointer from the subject by its type. | |
template<EParadigm Paradigm, typename T , more::enable_if_t<(AllowsStructuralChanges &&AllowsDirectTraitAccess)||IsUnsafe(Paradigm), bool > = true> | |
TOutcome< Paradigm, TTraitPtrResult< Paradigm, T > > | ObtainTraitPtr () const |
Obtain a trait pointer from the subject. | |
template<typename T , EParadigm Paradigm = EParadigm::Default> | |
auto | ObtainTraitPtr () const |
Obtain a trait pointer from the subject. | |
template<EParadigm Paradigm, typename T , more::enable_if_t<(AllowsStructuralChanges &&AllowsDirectTraitAccess)||IsUnsafe(Paradigm), bool > = true> | |
TOutcome< Paradigm, TTraitRefResult< Paradigm, T > > | ObtainTraitRef () const |
Obtain a trait reference from the subject. | |
template<typename T , EParadigm Paradigm = EParadigm::Default, more::enable_if_t<(AllowsStructuralChanges &&AllowsDirectTraitAccess)||IsUnsafe(Paradigm), bool > = true> | |
TOutcome< Paradigm, TTraitRefResult< Paradigm, T > > | ObtainTraitRef () const |
Obtain a trait reference from the subject. | |
template<EParadigm Paradigm = EParadigm::Default, more::enable_if_t< AllowsChanges||IsUnsafe(Paradigm), bool > = true> | |
TOutcome< Paradigm > | ObtainTraitDeferred (UScriptStruct *const TraitType) const |
Obtain a trait for the subject by its type. | |
template<EParadigm Paradigm, typename T , more::enable_if_t< AllowsChanges||IsUnsafe(Paradigm), bool > = true> | |
TOutcome< Paradigm, T > | ObtainTraitDeferred () const |
Obtain a trait copy from the subject. | |
template<typename T , EParadigm Paradigm = EParadigm::Default> | |
auto | ObtainTraitDeferred () const |
Obtain a trait copy from the subject. | |
Deferred Trait Settings | |
template<EParadigm Paradigm = EParadigm::Default, typename T = void, more::enable_if_t< AllowsChanges||IsUnsafe(Paradigm), bool > = true> | |
TOutcome< Paradigm > | SetTraitDeferred (UScriptStruct *const TraitType, const void *const TraitData) const |
Set a trait of the subject by its type. | |
template<EParadigm Paradigm = EParadigm::Default, typename T = void, more::enable_if_t< AllowsChanges||IsUnsafe(Paradigm), bool > = true> | |
TOutcome< Paradigm > | SetTraitDeferred (const T *Trait) const |
Set a trait of the subject by its type. | |
template<EParadigm Paradigm = EParadigm::Default, typename T = void, more::enable_if_t< AllowsChanges||IsUnsafe(Paradigm), bool > = true> | |
TOutcome< Paradigm > | SetTraitDeferred (const T &Trait) const |
Set a trait of the subject by its type. | |
Trait Removal | |
template<EParadigm Paradigm = EParadigm::Default, more::enable_if_t< AllowsStructuralChanges||IsUnsafe(Paradigm), bool > = true> | |
TOutcome< Paradigm > | RemoveTrait (UScriptStruct *const TraitType) const |
Remove a trait from the subject. | |
template<EParadigm Paradigm, typename T , more::enable_if_t< AllowsStructuralChanges||IsUnsafe(Paradigm), bool > = true> | |
TOutcome< Paradigm > | RemoveTrait () const |
Remove a trait from the subject. | |
template<typename T , EParadigm Paradigm = EParadigm::Default> | |
auto | RemoveTrait () const |
Remove a trait from the subject. | |
template<EParadigm Paradigm = EParadigm::Default, more::enable_if_t< AllowsStructuralChanges||IsUnsafe(Paradigm), bool > = true> | |
TOutcome< Paradigm > | RemoveAllTraits () const |
Remove all of the traits from the subject (if any). | |
Deferred Trait Removal | |
template<EParadigm Paradigm = EParadigm::Default, more::enable_if_t< IsUnsafe(Paradigm)||AllowsChanges, int > = 0> | |
TOutcome< Paradigm > | RemoveTraitDeferred (UScriptStruct *const TraitType) const |
Remove a trait from the subject. | |
template<EParadigm Paradigm, typename T , more::enable_if_t< IsUnsafe(Paradigm)||AllowsChanges, int > = 0> | |
TOutcome< Paradigm > | RemoveTraitDeferred () const |
Remove a trait from the subject. | |
template<typename T , EParadigm Paradigm = EParadigm::Default> | |
TOutcome< Paradigm > | RemoveTraitDeferred () const |
Remove a trait from the subject. | |
template<EParadigm Paradigm = EParadigm::Default> | |
TOutcomeIfUnsafeOr< Paradigm, AllowsChanges > | RemoveAllTraitsDeferred (const bool bForceEnqueue=false) const |
Remove all of the traits from the subject. | |
Details Getting | |
TDetailPtrResult< UDetail > | GetDetail (TSubclassOf< UDetail > DetailClass) const |
Get a detail of a certain class. | |
template<class D > | |
TDetailPtrResult< D > | GetDetail () const |
Get a detail of a certain class. | |
Networking | |
template<EParadigm Paradigm = EParadigm::Default> | |
TOutcomeIfUnsafeOr< Paradigm, AllowsChanges > | BringOnline () const |
Make the subject networked. | |
template<EParadigm Paradigm = EParadigm::Default> | |
TOutcome< Paradigm > | BringOnline (const TRange< NetworkIdType > &IdRange) const |
Make the subject networked while using a custom network identifiers range. | |
template<EParadigm Paradigm = EParadigm::Default> | |
TOutcomeIfUnsafeOr< Paradigm, AllowsChanges > | SetConnectionPermit (UNetConnection *const Connection) const |
Set the server-side connection to a client from which it is allowed to push traits to this subject. | |
template<EParadigm Paradigm = EParadigm::Default> | |
TOutcomeIfUnsafeOr< Paradigm, AllowsChanges > | SetTraitmarkPermit (const FTraitmark &InTraitmarkPermit) const |
Set the server-side list of traits allowed to be pushed from clients. | |
template<EParadigm Paradigm = EParadigm::Default> | |
TOutcomeIfUnsafeOr< Paradigm, AllowsChanges > | SetTraitmarkPass (const FTraitmark &InTraitmarkPermit) const |
template<EParadigm Paradigm = EParadigm::Default> | |
TOutcomeIfUnsafeOr< Paradigm, AllowsStructuralChanges > | PushTrait (UScriptStruct *const TraitType, const void *const TraitData, const EPeerRole PeerRole=EPeerRole::Auto, const bool bReliable=true) const |
Send an additional trait to the remote version of the subject. | |
template<EParadigm Paradigm = EParadigm::Default> | |
TOutcomeIfUnsafeOr< Paradigm, AllowsStructuralChanges > | PushTrait (UScriptStruct *const TraitType, const void *const TraitData, const bool bSetForLocal=false, const EPeerRole PeerRole=EPeerRole::Auto, const bool bReliable=true) const |
Send an additional trait to the remote version of the subject. | |
template<EParadigm Paradigm = EParadigm::Default, typename T = void> | |
TOutcomeIfUnsafeOr< Paradigm, AllowsStructuralChanges > | PushTrait (const T &Trait, const EPeerRole PeerRole=EPeerRole::Auto, const bool bReliable=true) const |
Send an additional trait to the remote version of the subject. | |
template<EParadigm Paradigm = EParadigm::Default, typename T = void> | |
TOutcomeIfUnsafeOr< Paradigm, AllowsStructuralChanges > | PushTrait (const T &Trait, const bool bSetForLocal=false, const EPeerRole PeerRole=EPeerRole::Auto, const bool bReliable=true) const |
Send an additional trait to the remote version of the subject. | |
template<EParadigm Paradigm = EParadigm::Default, typename T = void> | |
TOutcome< Paradigm > | PushTrait (const T &Trait, const EPeerRole PeerRole=EPeerRole::Auto, const bool bReliable=true) const |
Send an additional trait to the remote version of the subject. | |
template<EParadigm Paradigm = EParadigm::Default> | |
TOutcome< Paradigm > | PushTrait (UScriptStruct *const TraitType, const EPeerRole PeerRole=EPeerRole::Auto, const bool bReliable=true) const |
Send an existing trait to the remote version of the subject. | |
template<EParadigm Paradigm = EParadigm::Default> | |
TOutcome< Paradigm > | PushTrait (UScriptStruct *const TraitType, const bool bReliable, const EPeerRole PeerRole=EPeerRole::Auto) const |
Send an existing trait to the remote version of the subject. | |
template<EParadigm Paradigm, typename T > | |
TOutcome< Paradigm > | PushTrait (const EPeerRole PeerRole=EPeerRole::Auto, const bool bReliable=true) const |
Send an existing trait to the remote version of the subject. | |
template<typename T , EParadigm Paradigm = EParadigm::Default> | |
auto | PushTrait (const EPeerRole PeerRole=EPeerRole::Auto, const bool bReliable=true) const |
Send an existing trait to the remote version of the subject. | |
template<typename T , EParadigm Paradigm = EParadigm::Default> | |
auto | PushTrait (const bool bReliable, const EPeerRole PeerRole=EPeerRole::Auto) const |
Send an existing trait to the remote version of the subject. | |
Initialization | |
TSubjectHandle () | |
Construct a new invalid subject handle. | |
TSubjectHandle (const TSubjectHandle &InHandle) | |
Copy-construct a new subject handle. | |
Public Member Functions inherited from FCommonSubjectHandle | |
FCommonSubjectHandle () | |
Initialize an invalid (null) handle. | |
FCommonSubjectHandle (const FCommonSubjectHandle &InSubjectHandle) | |
Initialize as a copy of an another subject handle. | |
auto | operator-> () const |
Use the handle as a pointer. | |
auto & | operator* () const |
Dereference itself. | |
IdType | GetId () const |
Get the unique identifier of the subject. | |
GenerationType | GetGeneration () const |
Get the current generation of the subject. | |
auto | GetMechanismId () const |
Get the identifier of the mechanism the subject is part of. | |
auto | GetPlace () const |
Get the place index of the subject. | |
bool | IsSolid () const |
Check if the subject is currently solid. | |
void | ResetHandle () |
Reset the subject handle. | |
FCommonSubjectHandle & | operator= (TYPE_OF_NULLPTR) |
Clear the subject handle, essentially making it invalid. | |
uint32 | CalcHash () const |
Calculate the hash-sum value for the handle. | |
AMechanism * | GetMechanism () const |
Get the mechanism the subject is part of. | |
const FFingerprint & | GetFingerprint () const |
Get the current fingerprint of the subject. | |
bool | Matches (const FFilter &InFilter) const |
Check if the subject matches a certain filter. | |
bool | IsValid () const |
Check if the subject handle is valid and is pointing to an existent subject. | |
bool | operator== (TYPE_OF_NULLPTR) const |
Check if the subject handle is invalid and is pointing to a non-existent subject. | |
bool | operator!= (TYPE_OF_NULLPTR) const |
Check if the subject handle is valid and is pointing to an existent subject. | |
operator bool () const | |
Check if the subject handle is valid and is pointing to an existent subject. | |
bool | EqualsRaw (const FCommonSubjectHandle &InSubject) const |
Check if two subject handles are equal byte-wise. | |
bool | Equals (const FCommonSubjectHandle &InSubjectHandle) const |
Check if the subject handle points to the same subject as the other one. | |
bool | operator== (const FCommonSubjectHandle &InSubjectHandle) const |
Check if the subject handle points to the same subject as the other one. | |
bool | operator!= (const FCommonSubjectHandle &InSubjectHandle) const |
Check if the subject handles point to different subjects. | |
EFlagmark | GetFlagmark () const |
Get the flagmark of the subject. | |
bool | HasFlag (const EFlagmarkBit Flag) const |
Get the state of a certain flag of the subject. | |
bool | HasTrait (UScriptStruct *const TraitType) const |
Check if the subject has a certain trait. | |
template<typename T > | |
std::enable_if< IsTraitType< T >(), bool >::type | HasTrait () const |
Check if the subject has a certain trait. | |
bool | HasDetail (TSubclassOf< UDetail > DetailClass) const |
Check if the subject has a certain detail. | |
template<typename D > | |
std::enable_if< IsDetailClass< D >(), bool >::type | HasDetail () const |
Check if the subject has a certain detail. | |
template<EParadigm Paradigm = EParadigm::Default> | |
TOutcome< Paradigm > | GetTrait (UScriptStruct *const TraitType, void *const OutTraitData, const bool bTraitDataInitialized=true) const |
Get a trait from the subject by its type. | |
template<EParadigm Paradigm = EParadigm::Default, typename T = void> | |
TOutcome< Paradigm > | GetTrait (T &OutTrait, const bool bTraitDataInitialized=true) const |
Get a trait from a subject by its type. | |
template<EParadigm Paradigm, typename T > | |
TOutcome< Paradigm, T > | GetTrait () const |
Get a trait copy from the subject by its type. | |
template<typename T , EParadigm Paradigm = EParadigm::Default> | |
TOutcome< Paradigm, T > | GetTrait () const |
Get a trait copy from the subject by its type. | |
bool | IsOnline () const |
Check if the subject currently networked. | |
NetworkIdType | GetNetworkId () const |
Get a unique network identifier of a subject (if any). | |
bool | IsInNetworkMode (const ENetMode Mode) const |
Check if the subject is of a certain network mode. | |
bool | IsServerSide () const |
Check if this is a server-side version of the subject. | |
bool | IsClientSide () const |
Check if this is a client-side version of the subject. | |
UNetConnection * | GetConnectionPermit () const |
Get the server-side connection that is allowed to push to the server's version of the subject. | |
const FTraitmark & | GetTraitmarkPermit () const |
Get the server-side list of traits allowed to be received from clients. | |
const FTraitmark & | GetTraitmarkPass () const |
FCommonSubjectHandle & | operator= (const FCommonSubjectHandle &InSubjectHandle) |
Assign to be a copy of an another subject handle. | |
Static Public Member Functions | |
static constexpr bool | IsHandleSolid () |
Check if the handle itself a solid one. | |
Static Public Attributes | |
static constexpr bool | AllowsChanges = bAllowChanges |
Is the target subject mutable (non-constant)? | |
static constexpr bool | AllowsDirectTraitAccess = bAllowDirectTraitAccess |
Is the direct (trait) data access possible? | |
static constexpr bool | AllowsStructuralChanges = bAllowStructuralChanges |
Is changing of the subject's structure (adding/removing traits) allowed. | |
Static Public Attributes inherited from FCommonSubjectHandle | |
static constexpr IdType | InvalidId = FSubjectInfo::InvalidId |
Invalid subject identifier. | |
static constexpr IdType | FirstPlace = FSubjectInfo::FirstPlace |
A first valid subject identifier. | |
static constexpr IdType | LastPlace = FSubjectInfo::LastPlace |
The maximum valid subject identifier. | |
static constexpr GenerationType | FirstGeneration = FSubjectInfo::FirstGeneration |
The first valid generation. | |
static constexpr GenerationType | LastGeneration = FSubjectInfo::LastGeneration |
The maximum valid generation. | |
static const FCommonSubjectHandle | Invalid |
An invalid common subject handle constant. | |
Protected Member Functions | |
TSubjectHandle (const int32 InId, const GenerationType InGeneration) | |
TSubjectHandle (const MechanismIdType InMechanismId, const IdType InPlace, const GenerationType InGeneration) | |
TSubjectHandle (const FCommonSubjectHandle &InHandle) | |
Protected Member Functions inherited from FCommonSubjectHandle | |
FSubjectInfo * | FindInfo () const |
Get the valid subject info record (if any). | |
FSubjectInfo & | GetInfo () const |
Get the subject info record associated with it. | |
FFingerprint & | GetFingerprintRef () const |
Get the current fingerprint's reference of the subject. | |
template<EParadigm Paradigm = EParadigm::DefaultInternal> | |
TOutcome< Paradigm, bool > | MarkBooted () const |
UChunk * | GetChunk () const |
Get the current chunk of the subject. | |
ISubjective * | GetSubjective () const |
Get a subjective this handle is associated with (if any). | |
UDetail * | GetDetail (TSubclassOf< UDetail > DetailClass) const |
Get a detail of a certain class. | |
template<class D > | |
D * | GetDetail () const |
Get a detail of a certain class. | |
FCommonSubjectHandle (const IdType InId, const GenerationType InGeneration) | |
Initialize a common handle with explicit id and generation specifications. | |
FCommonSubjectHandle (const MechanismIdType InMechanismId, const IdType InPlace, const GenerationType InGeneration) | |
Initialize a common handle with explicit mechanism, placement and generation specifications. | |
Friends | |
template<typename ChunkItT , typename BeltItT , EParadigm Paradigm> | |
struct | TChain |
template<typename SubjectHandleT > | |
struct | TChunkIt |
template<typename SubjectHandleT > | |
struct | TBeltIt |
struct | FSubjectInfo |
struct | FSubjectNetworkState |
struct | FSolidSubjectHandle |
struct | FConstSubjectHandle |
struct | FChunkSlot |
struct | FSubjectRecord |
class | UChunk |
class | AMechanism |
class | UMachine |
class | ISubjective |
class | UNetworkBearerComponent |
class | ASubjectiveActor |
class | USubjectiveActorComponent |
Additional Inherited Members | |
Protected Attributes inherited from FCommonSubjectHandle | |
int32 | Id = InvalidId |
A unique identifier of the subject within the mechanism. | |
uint32 | Generation = FirstGeneration |
A unique generation of the subject. | |
The main entity in the mechanism, consisting of traits.
This is a user-level handle structure, something like a pointer. The size of this structure is exactly 64-bit and may efficiently be passed by value to the methods and functions.
The base version is the most generic and unsafe one, that allows all sorts of access and functionality.
bAllowChanges | Is the referenced subject mutable (non-constant)? |
bAllowDirectTraitAccess | Should direct access provided to the trait data. |
bAllowStructuralChanges | Should structural changes (adding/removing traits) be allowed. |
using TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::Super = FCommonSubjectHandle |
The base handle type.
using TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::TDetailPtrResult = typename std::conditional<bAllowChanges, std::add_pointer_t<D>, std::add_pointer_t<std::add_const_t<D> >>::type |
The type of a detail pointer returned by the methods.
D | The class of the detail. Must be a UDetail subclass. |
using TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::TDetailPtrResultSecurity = typename std::enable_if<IsDetailClass<std::remove_cv_t<D> >(), bool>::type |
Check the class of a detail.
D | The class of the detail. Must be a UDetail subclass. |
using TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::TTraitPtrResult = typename std::conditional<AllowsChanges, std::add_pointer_t<T>, std::add_pointer_t<std::add_const_t<T> >>::type |
The type of a trait pointer returned by the methods.
Paradigm | The access safety paradigm. |
T | The type of the trait. |
using TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::TTraitPtrResultSecurity = typename std::enable_if<(bAllowDirectTraitAccess || IsUnsafe(Paradigm)) && IsTraitType<std::remove_cv_t<T> >(), bool>::type |
Assess the availability of a trait pointer result.
Paradigm | The access safety paradigm. |
T | The type of the trait. |
using TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::TTraitRefResult = typename std::conditional<bAllowChanges, std::add_lvalue_reference_t<T>, std::add_lvalue_reference_t<std::add_const_t<T> >>::type |
The type of a trait reference returned by the methods.
Paradigm | The access safety paradigm. |
T | The type of the trait. |
using TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::TTraitRefResultSecurity = typename std::enable_if<(bAllowDirectTraitAccess || IsUnsafe(Paradigm)) && IsTraitType<std::remove_cv_t<T> >(), bool>::type |
Check the type of a trait reference returned by the methods.
Paradigm | The access safety paradigm. |
T | The type of the trait. |
using TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::TTraitVoidPtrResult = typename std::conditional<AllowsChanges, void*, const void*>::type |
The type of a trait void pointer returned by the methods.
Paradigm | The access safety paradigm. |
using TSubjectHandle< bAllowChanges, bAllowDirectTraitAccess, bAllowStructuralChanges >::TTraitVoidPtrResultSecurity = typename std::enable_if<bAllowDirectTraitAccess || IsUnsafe(Paradigm), bool>::type |
The type of a trait void pointer returned by the methods.
Paradigm | The access safety paradigm. |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inline |
Construct a new invalid subject handle.
|
inline |
Copy-construct a new subject handle.
|
inline |
Add flags to the flagmark of the subject.
This is a user-level method that prevents adding the system-level flags.
This operation is atomic and thread-safe.
Paradigm | The security paradigm to use. |
Flagmark | The flagmark to set. |
|
inline |
Make the subject networked.
Server-only method.
This assigns a new, unique, cross-peer identifier to the subject and spawns an empty instance of it on the client(s).
If the subject is already online, nothing is performed.
|
inline |
Make the subject networked while using a custom network identifiers range.
Server-only method.
This assigns a new, unique, cross-peer identifier to the subject and spawns an empty instance of it on the client(s).
If the subject is already online, nothing is performed.
IdRange | The range of identifiers to allocate within. |
|
inline |
Copy all of the traits of the subject to some other subject.
The existing traits of the destination subject are not removed but the new ones are added and/or override the existing matching ones.
Paradigm | The paradigm to work under. |
AnyDirectAccess | Basically, any trait access is supported by the method. |
DestinationSubjectHandle | The destination subject to copy to. Must denote a valid subject. |
|
inline |
Destroy the subject.
Paradigm | The paradigm to work under. |
|
inline |
Destroy the subject.
Deferred version.
The actual entity destruction is deferred until the deferreds are applied either automatically or manually.
Paradigm | The security paradigm to work under. |
bHard | Should the hard version of the operation be performed, i.e. the entity gets marked and is skipped during the iteratings from now on. |
|
inline |
Get a detail of a certain class.
Templated version.
D | The class of the detail to get. |
|
inline |
Get a detail of a certain class.
DetailClass | The class of the detail to get. |
|
inline |
Get a pointer to a trait of a certain type.
Static type paradigm version.
The operation is secure only for subject handles allowing direct access to the traits data.
Paradigm | The paradigm to work under. |
T | The type of the trait to get. |
|
inline |
Get a pointer to a trait of a certain type.
Statically typed default paradigm version.
The operation is secure only for subject handles allowing direct access to the traits data.
T | The type of the trait to get. |
|
inline |
Get a pointer to a trait of the subject of a certain type.
Dynamic type version.
The operation is secure only for subject handles allowing direct access to the traits data.
Paradigm | The security paradigm to use. |
TraitType | The type of the trait to get. May be a nullptr and a nullptr is returned in this case. |
TraitType
is a nullptr
.
|
inline |
Get a trait from a subject by its type.
Static type paradigm version.
The operation is secure only for subject handles allowing direct access to the traits data.
Paradigm | The paradigm to work under. |
T | The type of the trait to get. |
|
inline |
Get a trait from a subject by its type.
Static type version.
The operation is secure only for subject handles allowing direct access to the traits data.
T | The type of the trait to get. |
|
inlinestaticconstexpr |
Check if the handle itself a solid one.
|
inline |
Obtain a trait copy from the subject.
Statically typed paradigm version.
If the trait is not currently within the subject, it gets created anew and the default value is returned.
Paradigm | The security paradigm to use. |
T | The type of the trait to obtain. |
|
inline |
Obtain a trait copy from the subject.
Statically typed version.
If the trait is not currently within the subject, it gets created anew and the default value is returned.
T | The type of the trait to obtain. |
|
inline |
Obtain a trait from the subject.
Templated outputting version.
If the trait is not currently within the subject, it gets created anew and the default value gets copied to the receiver.
Paradigm | The security paradigm to use. |
T | The type of the trait to obtain. |
[out] | OutTrait | The trait receiver. |
[in] | bTraitDataInitialized | Is the OutTrait actually initialized? |
|
inline |
Obtain a trait for the subject by its type.
If the trait is not currently within the subject, it gets created anew.
Paradigm | The paradigm to work under. |
TraitType | The type of the trait to obtain. |
|
inline |
Obtain a trait from the subject by its type.
Outputting version.
If the trait is not currently within the subject, it gets created anew and the default value gets copied to the receiver.
Paradigm | The paradigm to work under. |
T | The type of the data to receive the trait. Must match the TraitType . |
TraitType | The type of the trait to obtain. Must match that of the T parameter. |
OutTraitData | The trait data receiver. |
bTraitDataInitialized | Is the OutTraitData buffer actually initialized? |
|
inline |
Obtain a trait copy from the subject.
Templated paradigm deferred version.
If the trait is currently missing in the subject, its default value is returned.
The actual change (if any) is deferred until the deferreds are applied either automatically or manually.
Paradigm | The paradigm to work under. |
T | The type of the trait to obtain. |
Paradigm | The security paradigm to use. |
|
inline |
Obtain a trait copy from the subject.
Templated deferred version.
If the trait is currently missing in the subject, its default value is returned.
The actual change (if any) is deferred until the deferreds are applied either automatically or manually.
T | The type of the trait to obtain. |
Paradigm | The paradigm to work under. |
|
inline |
Obtain a trait for the subject by its type.
Dynamically-typed deferred version.
The actual change (if any) is deferred until the deferreds are applied either automatically or manually.
Paradigm | The security paradigm to use. |
TraitType | The type of the trait to obtain. |
|
inline |
Obtain a trait pointer from the subject.
Statically typed pointer paradigm version.
If the trait is not currently within the subject, it gets created anew and a pointer to it is returned.
Paradigm | The security paradigm to use. |
T | The type of the trait to obtain. |
|
inline |
Obtain a trait pointer from the subject.
Statically typed pointer default paradigm version.
If the trait is not currently within the subject, it gets created anew and a pointer to it is returned.
T | The type of the trait to obtain. |
Paradigm | The security paradigm to use. |
|
inline |
Obtain a trait data pointer from the subject by its type.
Pointer version.
If the trait is not currently within the subject, it gets created anew and returned to the receiver.
Paradigm | The paradigm to work under. |
TraitType | The type of the trait to obtain. May be a nullptr and will return a nullptr in this case. |
|
inline |
Obtain a trait reference from the subject.
Templated paradigm reference version.
If the trait is not currently within the subject, it gets created anew and its reference is returned.
Paradigm | The security paradigm to use. |
T | The type of the trait to obtain. |
|
inline |
Obtain a trait reference from the subject.
Templated reference default paradigm version.
If the trait is not currently within the subject, it gets created anew and its reference is returned.
T | The type of the trait to obtain. |
Paradigm | The security paradigm to use. |
|
inline |
Check if the subject handle points to a different subject than the other one.
Two invalid subject handles are considered to be the same and this operator would return false
.
InSubjectHandle | A subject handle to compare with. |
|
inline |
Check if the subject handle is valid and is pointing to an existent subject.
true
if the subject is valid. Otherwise, false
is returned.
|
inline |
Dereference itself.
This interface is needed for compatiblity
|
inline |
Use the handle as a pointer.
This interface is needed for compatiblity
|
inline |
Clear the subject handle, essentially making it invalid.
|
inline |
Check if the subject handle points to the same subject as the other one.
If both handles are invalid, returns true
.
InSubjectHandle | A subject handle to compare with. |
|
inline |
Check if the subject handle is invalid and is pointing to a non-existent subject.
true
if the subject is invalid. Otherwise, false
is returned.
|
inline |
Overwrite existing traits from a subject record.
Only the existing traits get overwritten.
Paradigm | The paradigm to work under. |
SubjectRecord | The subject traits pack to overwrite from. |
|
inline |
Overwrite existing subject traits from the array.
Paradigm | The paradigm to work under. |
A1 | The allocator type of the types array. |
A2 | The allocator type of the traits data array. |
T | The type of the traits data elements. May be a void . |
TraitsTypes | The types of traits to overwrite. |
TraitsData | The corresponding traits data to overwrite with. |
|
inline |
Send an existing trait to the remote version of the subject.
Statically typed default paradigm immutable version.
The trait can be sent both from the client's version to the server's and from the server's version to the client(s)'.
When pushing from the server, the trait gets broadcasted to all of the available clients (if any).
When pushing from the client, the server will apply the trait only if it's in the traitmark permit of the server's version.
T | The type of the trait to send. |
Paradigm | The safety paradigm to invoke under. |
bReliable | Should a reliable channel be used for the transaction. |
PeerRole | The peer role specification. If left as EPeerRole::Auto, the peer role is tried to be derived automatically. This may be ambiguous on a listen server, so you can provide one explicitly. |
|
inline |
Send an existing trait to the remote version of the subject.
Statically typed immutable version.
The trait can be sent both from the client's version to the server's and from the server's version to the client(s)'.
When pushing from the server, the trait gets broadcasted to all of the available clients (if any).
When pushing from the client, the server will apply the trait only if it's in the traitmark permit of the server's version.
T | The type of the trait to send. |
Paradigm | The safety paradigm to invoke under. |
[in] | PeerRole | The peer role specification. If left as EPeerRole::Auto, the peer role is tried to be derived automatically. This may be ambiguous on a listen server, so you can provide one explicitly. |
[in] | bReliable | Should a reliable channel be used for the transaction. |
|
inline |
Send an existing trait to the remote version of the subject.
Statically typed default paradigm immutable version.
The trait can be sent both from the client's version to the server's and from the server's version to the client(s)'.
When pushing from the server, the trait gets broadcasted to all of the available clients (if any).
When pushing from the client, the server will apply the trait only if it's in the traitmark permit of the server's version.
T | The type of the trait to send. |
Paradigm | The safety paradigm to invoke under. |
PeerRole | The peer role specification. If left as EPeerRole::Auto, the peer role is tried to be derived automatically. This may be ambiguous on a listen server, so you can provide one explicitly. |
bReliable | Should a reliable channel be used for the transaction. |
|
inline |
Send an additional trait to the remote version of the subject.
Templated version.
The trait can be sent both from the client's version to the server's and from the server's version to the client(s)'.
When pushing from the server, the trait gets broadcasted to all of the available clients (if any). The subject is brought online automatically, if needed.
When pushing from the client, the server will apply the trait only if it's in the traitmark permit of the server's version.
Paradigm | The security paradigm to use. |
T | The type of the trait to send. |
[in] | Trait | The trait to push. |
[in] | bSetForLocal | Should the trait be also set on the local version of the subject. |
[in] | PeerRole | The peer role specification. If left as EPeerRole::Auto, the peer role is tried to be derived automatically. This may be ambiguous on a listen server, so you should provide one explicitly sometimes. |
[in] | bReliable | Should the trait be sent using a reliable channel. |
bSetForLocal
argument is deprecated now. Set the trait explicitly or use the version of the method without the argument, please.
|
inline |
Send an additional trait to the remote version of the subject.
Templated version.
The trait can be sent both from the client's version to the server's and from the server's version to the client(s)'.
When pushing from the server, the trait gets broadcasted to all of the available clients (if any). The subject is brought online automatically, if needed.
When pushing from the client, the server will apply the trait only if it's in the traitmark permit of the server's version.
Paradigm | The security paradigm to use. |
T | The type of the trait to send. |
[in] | Trait | The trait to push. |
[in] | PeerRole | The peer role specification. If left as EPeerRole::Auto, the peer role is tried to be derived automatically. This may be ambiguous on a listen server, so you should provide one explicitly sometimes. |
[in] | bReliable | Should the trait be sent using a reliable channel. |
|
inline |
Send an additional trait to the remote version of the subject.
Statically typed immutable version.
The trait can be sent both from the client's version to the server's and from the server's version to the client(s)'.
When pushing from the server, the trait gets broadcasted to all of the available clients (if any). The subject is brought online automatically, if needed.
When pushing from the client, the server will apply the trait only if it's in the traitmark permit of the server's version.
Paradigm | The security paradigm to use. |
T | The type of the trait to send. |
[in] | Trait | The trait to push. |
[in] | PeerRole | The peer role specification. If left as EPeerRole::Auto, the peer role is tried to be derived automatically. This may be ambiguous on a listen server, so you should provide one explicitly sometimes. |
[in] | bReliable | Should the trait be sent using a reliable channel. |
|
inline |
Send an existing trait to the remote version of the subject.
Dynamically typed immutable version.
The trait can be sent both from the client's version to the server's and from the server's version to the client(s)'.
When pushing from the server, the trait gets broadcasted to all of the available clients (if any).
When pushing from the client, the server will apply the trait only if it's in the traitmark permit of the server's version.
Paradigm | The safety paradigm to invoke under. |
[in] | TraitType | The type of the trait to send. The type must already exist within the subject or be a nullptr . |
[in] | bReliable | Should the trait be sent using a reliable channel. |
[in] | PeerRole | The peer role specification. If left as EPeerRole::Auto, the peer role is tried to be derived automatically. This may be ambiguous on a listen server, so you can provide one explicitly. |
|
inline |
Send an existing trait to the remote version of the subject.
Dynamically typed immutable version.
The trait can be sent both from the client's version to the server's and from the server's version to the client(s)'.
When pushing from the server, the trait gets broadcasted to all of the available clients (if any).
When pushing from the client, the server will apply the trait only if it's in the traitmark permit of the server's version.
Paradigm | The safety paradigm to invoke under. |
[in] | TraitType | The type of the trait to send. The type must already exist within the subject or be a nullptr . |
[in] | PeerRole | The peer role specification. If left as EPeerRole::Auto, the peer role is tried to be derived automatically. This may be ambiguous on a listen server, so you can provide one explicitly. |
[in] | bReliable | Should the trait be sent using a reliable channel. |
|
inline |
Send an additional trait to the remote version of the subject.
Templated version.
The trait can be sent both from the client's version to the server's and from the server's version to the client(s)'.
When pushing from the server, the trait gets broadcasted to all of the available clients (if any). The subject is brought online automatically, if needed.
When pushing from the client, the server will apply the trait only if it's in the traitmark permit of the server's version.
Paradigm | The safety paradigm to invoke under. |
[in] | TraitType | The type of the trait to send. |
[in] | TraitData | The data of the trait to send. |
[in] | bSetForLocal | Should the trait also be set for the local version of the subject. |
[in] | PeerRole | The peer role specification. If left as EPeerRole::Auto, the peer role is tried to be derived automatically. This may be ambiguous on a listen server, so you can provide one explicitly. |
[in] | bReliable | Should the trait be sent using a reliable channel. |
bSetForLocal
argument is deprecated now. Set the trait explicitly or use the version of the method without the argument, please.
|
inline |
Send an additional trait to the remote version of the subject.
Templated version.
The trait can be sent both from the client's version to the server's and from the server's version to the client(s)'.
When pushing from the server, the trait gets broadcasted to all of the available clients (if any). The subject is brought online automatically, if needed.
When pushing from the client, the server will apply the trait only if it's in the traitmark permit of the server's version.
Paradigm | The safety paradigm to invoke under. |
[in] | TraitType | The type of the trait to send. |
[in] | TraitData | The data of the trait to send. |
[in] | PeerRole | The peer role specification. If left as EPeerRole::Auto, the peer role is tried to be derived automatically. This may be ambiguous on a listen server, so you can provide one explicitly. |
[in] | bReliable | Should the trait be sent using a reliable channel. |
|
inline |
Remove all of the traits from the subject (if any).
If there are no traits in the subject, nothing is performed and EApparatusStatus::Noop is returned.
Paradigm | The paradigm to work under. |
|
inline |
Remove all of the traits from the subject.
Deferred version.
The actual change is deferred until the deferreds are applied either automatically or manually.
Paradigm | The paradigm to work under. |
bForceEnqueue | Should the traits be enqueued to be removed even if there are none currently. |
|
inline |
Remove a trait from the subject.
Templated paradigm version.
If there is no such trait in the subject, nothing is performed and EApparatusStatus::Noop is returned.
Paradigm | The security paradigm to use. |
T | The type of the trait to remove. |
|
inline |
Remove a trait from the subject.
Templated version.
If there is no such trait in the subject, nothing is performed and EApparatusStatus::Noop is returned.
Paradigm | The security paradigm to use. |
T | The type of the trait to remove. |
|
inline |
Remove a trait from the subject.
Dynamic type version.
If there is no such trait in the subject, nothing is performed and EApparatusStatus::Noop is returned.
Paradigm | The security paradigm to use. |
TraitType | The type of the trait to remove. If is a nullptr , nothing is performed. |
|
inline |
Remove a trait from the subject.
Statically typed paradigm deferred version.
The actual change is deferred until the deferreds are applied either automatically or manually.
If at the time of performing the operation, the trait is not within the subject, nothing gets performed.
Paradigm | The security paradigm to use. |
T | The type of the trait to remove. |
|
inline |
Remove a trait from the subject.
Statically typed paradigm deferred version.
The actual change is deferred until the deferreds are applied either automatically or manually.
If at the time of performing the operation, the trait is not within the subject, nothing gets performed.
T | The type of the trait to remove. |
Paradigm | The security paradigm to use. |
|
inline |
Remove a trait from the subject.
Deferred version.
The actual change is deferred until the deferreds are applied either automatically or manually.
If at the time of performing the operation, the trait is not within the subject, nothing gets performed.
Paradigm | The paradigm to work under. |
TraitType | The type of the trait to remove. If nullptr , nothing is performed. |
|
inline |
Set the server-side connection to a client from which it is allowed to push traits to this subject.
Paradigm | The safety paradigm to invoke under. |
[in] | Connection | The connection permit to set. |
|
inline |
Set a single flag for the subject.
This is a user-level method. Setting of the system-level flags is prohibited by default.
The operation is atomic and thread-safe.
Paradigm | The paradigm to work under. |
Flag | The flag to set. |
bState | The state to set to. |
|
inline |
Set a single flag for the subject.
Status version.
This is a user-level method. Setting of the system-level flags is strictly prohibited.
The operation is atomic and thread-safe.
Paradigm | The security paradigm to use. |
Flag | The flag to set. |
bState | The state to set to. |
|
inline |
Set the flagmark of the subject.
This is a user-level method that prevents changing the system-level flags by default.
This operation is atomic and thread-safe.
Paradigm | The paradigm to work under. |
Flagmark | The flagmark to set. The system-level bits are silently ignored. |
|
inline |
Set the flagmark of the subject.
Status version.
This is a user-level method that prevents setting the system-level flags.
This operation is atomic and thread-safe.
Paradigm | The paradigm to work under. |
Flagmark | The flagmark to set. The system-level bits are silently ignored. |
|
inline |
Set the flagmark of the subject.
This is a user-level method that prevents setting the system-level flags.
This operation is atomic and thread-safe.
Paradigm | The security paradigm to use. |
Flagmark | The flagmark to set. |
Mask | The mask to use. |
|
inline |
Set the flagmark of the subject.
Status version.
This is a user-level method that prevents setting the system-level flags.
This operation is atomic and thread-safe.
Paradigm | The security paradigm to use. |
Flagmark | The flagmark to set. |
Mask | The mask to use. |
|
inline |
Set the mechanism of the subjective.
For the actor-based subjectives the new mechanism must reside within the same world.
This procedure will essentially move the traits and the details to the new mechanism's own iterables.
Paradigm | The safety paradigm to use. |
Mechanism | The mechanism to set to. Must not be a nullptr . |
|
inline |
Set a trait of the subject to a trait record.
If the trait is not currently within the subject, it gets created anew and set accordingly
Paradigm | The security paradigm to use. |
TraitRecord | The trait record to set to. |
|
inline |
Add a flagmark to the subject.
Statically typed flagmark-compatiblity version.
The flags are actually being added here.
Paradigm | The security paradigm to use. |
T | The flagmark type. |
Flagmark | The flagmark to add. |
|
inline |
Set a trait of the subject.
Statically typed version.
If the trait is not currently within the subject, it gets created anew and set accordingly.
Paradigm | The security paradigm to use. |
T | The type of the trait to add. Must be a trait type. |
Trait | The trait to initialize with. |
|
inline |
Set a trait of the subject by its type.
Statically typed pointer version.
If the trait is not currently within the subject, it gets created anew and set accordingly
Paradigm | The paradigm to work under. |
[in] | TraitData | The trait data to initialize with. May not be a nullptr . |
|
inline |
Set a trait of the subject by its type.
Runtime type specification version.
If the trait is not currently within the subject, it gets created anew and set accordingly
Paradigm | The paradigm to work under. |
[in] | TraitType | The type of the trait to add. |
[in] | TraitData | The trait data to initialize with. May not be a nullptr , if the TraitType is set. |
|
inline |
Set a trait of the subject by its type.
Statically typed deferred version.
The actual change is deferred until the deferreds are applied either automatically or manually.
At the time of performing the operation, if the trait is not currently within the subject, it gets created anew and set accordingly.
Paradigm | The security paradigm to use. |
T | The type of the trait to set. |
Trait | The trait to initialize with. |
|
inline |
Set a trait of the subject by its type.
Statically typed deferred pointer version.
The actual change is deferred until the deferreds are applied either automatically or manually.
At the time of performing the operation, if the trait is not currently within the subject, it gets created anew and set accordingly.
Paradigm | The security paradigm to use. |
T | The type of the trait to set. |
Trait | The trait data to initialize with. |
|
inline |
Set a trait of the subject by its type.
Dynamically typed deferred version.
The actual change is deferred until the deferreds are applied either automatically or manually.
At the time of performing the operation, if the trait is not currently within the subject, it gets created anew and set accordingly.
Paradigm | The paradigm to work under. |
[in] | TraitType | The type of the trait to set. May be a nullptr and TraitData is not used in that case. |
[in] | TraitData | The trait data to initialize with. May not be a nullptr if the TraitType is specified. |
|
inline |
|
inline |
Set the server-side list of traits allowed to be pushed from clients.
Paradigm | The safety paradigm to invoke under. |
[in] | InTraitmarkPermit | The traitmark permit to set. |
|
inline |
Set multiple subject traits from a subject record.
The traits essentially get copied from the record.
Paradigm | The paradigm to work under. |
SubjectRecord | The subject traits pack to set from. |
bLeaveRedundant | Should redundant existing traits (not present in the record) be left in the subject. |
|
inline |
Set multiple subject traits equal to the supplied list.
Paradigm | The paradigm to work under. |
A1 | The allocator type of the types array. |
A2 | The allocator type of the traits data array. |
T | The type of the traits data elements. May be a void . |
TraitsTypes | The types of traits to add. |
TraitsData | The corresponding traits data to initialize with. |
bLeaveRedundant | Should redundant existing traits be left in the subject. |
|
inline |
Toggle a single flag for the subject.
This is a user-level method. Changing a system-level flag is prohibited by default.
The operation is atomic and thread-safe.
Paradigm | The paradigm to work under. |
Flag | The flag to toggle. |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
staticconstexpr |
Is the target subject mutable (non-constant)?
|
staticconstexpr |
Is the direct (trait) data access possible?
|
staticconstexpr |
Is changing of the subject's structure (adding/removing traits) allowed.