9#include "TypedElementHandle.generated.h"
51#if UE_TYPED_ELEMENT_HAS_REFTRACKING
64#if UE_TYPED_ELEMENT_HAS_REFTRACKING
69#if UE_TYPED_ELEMENT_HAS_REFTRACKING
82 inline explicit operator bool()
const
92 return DataPtr !=
nullptr;
117 template <
typename ElementDataType>
127 template <
typename ElementDataType>
128 const ElementDataType*
GetData(
const bool bSilent =
false)
const
148 return static_cast<const ElementDataType*
>(DataPtr->
GetUntypedData());
155 template <
typename ElementDataType>
158 checkf(DataPtr,
TEXT(
"Element handle data is null!"));
160 return *
static_cast<const ElementDataType*
>(DataPtr->
GetUntypedData());
221#if UE_TYPED_ELEMENT_HAS_REFTRACKING
238 inline void RegisterRef()
242#if !UE_TYPED_ELEMENT_HAS_REFTRACKING
249 inline void UnregisterRef()
253#if !UE_TYPED_ELEMENT_HAS_REFTRACKING
261#if UE_TYPED_ELEMENT_HAS_REFTRACKING
269template <
typename BaseInterfaceType>
282 InOther.InterfacePtr =
nullptr;
293 InOther.InterfacePtr =
nullptr;
304 inline explicit operator bool()
const
340 static_assert(std::is_same<U, BaseInterfaceType>::value,
"Don't explicitly specify U!");
394template <
typename BaseInterfaceType>
407template <
typename ElementDataType>
437 checkf(!
IsSet(),
TEXT(
"Element owner was still set during destruction! This will leak an element, and you should destroy this element prior to destruction!"));
440 inline explicit operator bool()
const
450 return DataPtr !=
nullptr;
469 static_assert(std::is_same<U, ElementDataType>::value,
"Don't explicitly specify U!");
471 ? &DataPtr->GetMutableData()
481 static_assert(std::is_same<U, ElementDataType>::value,
"Don't explicitly specify U!");
482 checkf(DataPtr,
TEXT(
"Handle data is null!"));
483 return DataPtr->GetMutableData();
495 DataPtr->AddRef(
false);
568#if UE_TYPED_ELEMENT_HAS_REFTRACKING
585 inline void RegisterRef()
589#if !UE_TYPED_ELEMENT_HAS_REFTRACKING
596 inline void UnregisterRef()
600#if !UE_TYPED_ELEMENT_HAS_REFTRACKING
608#if UE_TYPED_ELEMENT_HAS_REFTRACKING
632 : InternalData(
InOther.InternalData)
643 InternalData =
InOther.InternalData;
655 return InternalData ==
InOther.InternalData;
663 inline explicit operator bool()
const
670 return InternalData.IsSet();
675 InternalData.Release();
685 return InternalData.GetId();
717 UFUNCTION(BlueprintPure, Category=
"TypedElementFramework|Handle", meta=(ScriptMethod, ScriptOperator=
"bool"))
726 UFUNCTION(BlueprintCallable, Category=
"TypedElementFramework|Handle", meta=(ScriptMethod))
735 UFUNCTION(BlueprintPure, Category=
"TypedElementFramework|Handle", meta=(DisplayName=
"Equal (TypedElementHandle)", CompactNodeTitle=
"==", Keywords=
"== equal", ScriptMethod, ScriptOperator=
"=="))
744 UFUNCTION(BlueprintPure, Category=
"TypedElementFramework|Handle", meta=(DisplayName=
"NotEqual (TypedElementHandle)", CompactNodeTitle=
"!=", Keywords=
"!= not equal", ScriptMethod, ScriptOperator=
"!="))
#define checkSlow(expr)
Definition AssertionMacros.h:332
#define checkf(expr, format,...)
Definition AssertionMacros.h:315
@ INDEX_NONE
Definition CoreMiscDefines.h:150
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
const bool
Definition NetworkReplayStreaming.h:178
#define UPARAM(...)
Definition ObjectMacros.h:748
#define GENERATED_BODY(...)
Definition ObjectMacros.h:765
#define UFUNCTION(...)
Definition ObjectMacros.h:745
#define UCLASS(...)
Definition ObjectMacros.h:776
#define USTRUCT(...)
Definition ObjectMacros.h:746
constexpr uint32 HashCombine(uint32 A, uint32 C)
Definition TypeHash.h:36
int32 FTypedElementReferenceId
Definition TypedElementLimits.h:34
#define UE_TYPED_ELEMENT_HAS_REFTRACKING
Definition TypedElementLimits.h:9
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
if(Failed) console_printf("Failed.\n")
Definition TypedElementData.h:375
Definition TypedElementData.h:157
void ReleaseRef(const FTypedElementReferenceId InReferenceId) const
Definition TypedElementData.h:241
const FTypedElementId & GetId() const
Definition TypedElementData.h:212
virtual const void * GetUntypedData() const
Definition TypedElementData.h:303
FTypedElementReferenceId AddRef(const bool bCanTrackReference) const
Definition TypedElementData.h:217
Definition TypedElementData.h:328
Definition TypedElementHandle.h:710
UFUNCTION(BlueprintPure, Category="TypedElementFramework|Handle", meta=(DisplayName="Equal (TypedElementHandle)", CompactNodeTitle="==", Keywords="== equal", ScriptMethod, ScriptOperator="==")) static bool Equal(const FScriptTypedElementHandle &LHS
UFUNCTION(BlueprintPure, Category="TypedElementFramework|Handle", meta=(DisplayName="NotEqual (TypedElementHandle)", CompactNodeTitle="!=", Keywords="!= not equal", ScriptMethod, ScriptOperator="!=")) static bool NotEqual(const FScriptTypedElementHandle &LHS
@ Error
Definition LogVerbosity.h:28
static COREUOBJECT_API void KismetExecutionMessage(const TCHAR *Message, ELogVerbosity::Type Verbosity, FName WarningId=FName())
Definition ScriptCore.cpp:644
Definition TypedElementHandle.h:625
bool IsSet() const
Definition TypedElementHandle.h:668
FTypedElementHandle GetTypedElementHandle() const
Definition TypedElementHandle.h:692
FScriptTypedElementHandle(FScriptTypedElementHandle &&InOther)
Definition TypedElementHandle.h:636
void Private_Initialize(FScriptTypedElementInternalDataPtr &&InInternalData)
Definition TypedElementHandle.h:678
FScriptTypedElementHandle & operator=(FScriptTypedElementHandle &&InOther)
Definition TypedElementHandle.h:647
const FTypedElementId & GetId() const
Definition TypedElementHandle.h:683
bool operator!=(const FScriptTypedElementHandle &InOther) const
Definition TypedElementHandle.h:658
FScriptTypedElementHandle & operator=(const FScriptTypedElementHandle &InOther)
Definition TypedElementHandle.h:641
bool operator==(const FScriptTypedElementHandle &InOther) const
Definition TypedElementHandle.h:653
void Release()
Definition TypedElementHandle.h:673
FScriptTypedElementHandle(const FScriptTypedElementHandle &InOther)
Definition TypedElementHandle.h:631
FScriptTypedElementHandle()=default
Definition TypedElementHandle.h:18
void Private_DestroyReleaseRef()
Definition TypedElementHandle.h:226
const FTypedElementId & GetId() const
Definition TypedElementHandle.h:106
FTypedElementId AcquireId() const
Definition TypedElementHandle.h:167
friend bool operator==(const FTypedElementHandle &InLHS, const FTypedElementHandle &InRHS)
Definition TypedElementHandle.h:192
FTypedElementHandle(FTypedElementHandle &&InOther)
Definition TypedElementHandle.h:44
FTypedElementHandle & operator=(FTypedElementHandle &&InOther)
Definition TypedElementHandle.h:57
void Private_DestroyNoRef()
Definition TypedElementHandle.h:218
bool IsDataOfType() const
Definition TypedElementHandle.h:118
void Private_InitializeNoRef(const FTypedElementInternalData &InData)
Definition TypedElementHandle.h:207
FTypedElementHandle()=default
void Private_InitializeAddRef(const FTypedElementInternalData &InData)
Definition TypedElementHandle.h:212
const ElementDataType & GetDataChecked() const
Definition TypedElementHandle.h:156
void ReleaseId(FTypedElementId &InOutElementId) const
Definition TypedElementHandle.h:182
friend bool operator!=(const FTypedElementHandle &InLHS, const FTypedElementHandle &InRHS)
Definition TypedElementHandle.h:197
~FTypedElementHandle()
Definition TypedElementHandle.h:77
const FTypedElementInternalData * Private_GetInternalData() const
Definition TypedElementHandle.h:232
FTypedElementHandle(const FTypedElementHandle &InOther)
Definition TypedElementHandle.h:22
FTypedElementHandle & operator=(const FTypedElementHandle &InOther)
Definition TypedElementHandle.h:30
bool IsSet() const
Definition TypedElementHandle.h:90
friend uint32 GetTypeHash(const FTypedElementHandle &InElementHandle)
Definition TypedElementHandle.h:202
void Release()
Definition TypedElementHandle.h:98
const ElementDataType * GetData(const bool bSilent=false) const
Definition TypedElementHandle.h:128
Definition TypedElementId.h:17
void Private_InitializeNoRef(const FTypedHandleTypeId InTypeId, const FTypedHandleElementId InElementId)
Definition TypedElementId.h:104
FTypedHandleElementId GetElementId() const
Definition TypedElementId.h:73
static TYPEDELEMENTFRAMEWORK_API const FTypedElementId Unset
Definition TypedElementId.h:116
FTypedHandleTypeId GetTypeId() const
Definition TypedElementId.h:65
Definition TypedElementHandle.h:271
void Release()
Definition TypedElementHandle.h:321
TTypedElementBase(TTypedElementBase &&InOther)
Definition TypedElementHandle.h:278
TTypedElementBase & operator=(const TTypedElementBase &)=default
friend bool operator==(const TTypedElementBase &InLHS, const TTypedElementBase &InRHS)
Definition TypedElementHandle.h:345
friend uint32 GetTypeHash(const TTypedElementBase &InElement)
Definition TypedElementHandle.h:356
void Private_InitializeAddRef(const FTypedElementInternalData &InData, BaseInterfaceType *InInterfacePtr)
Definition TypedElementHandle.h:367
TTypedElementBase & operator=(TTypedElementBase &&InOther)
Definition TypedElementHandle.h:286
U & GetInterfaceChecked() const
Definition TypedElementHandle.h:338
BaseInterfaceType * InterfacePtr
Definition TypedElementHandle.h:386
friend bool operator!=(const TTypedElementBase &InLHS, const TTypedElementBase &InRHS)
Definition TypedElementHandle.h:351
TTypedElementBase()=default
bool IsSet() const
Definition TypedElementHandle.h:312
~TTypedElementBase()
Definition TypedElementHandle.h:299
BaseInterfaceType * GetInterface() const
Definition TypedElementHandle.h:329
TTypedElementBase(const TTypedElementBase &)=default
void Private_DestroyReleaseRef()
Definition TypedElementHandle.h:379
void Private_InitializeNoRef(const FTypedElementInternalData &InData, BaseInterfaceType *InInterfacePtr)
Definition TypedElementHandle.h:361
void Private_DestroyNoRef()
Definition TypedElementHandle.h:373
Definition TypedElementHandle.h:409
U & GetDataChecked() const
Definition TypedElementHandle.h:479
TTypedElementOwner(const TTypedElementOwner &)=delete
void ReleaseHandle(FTypedElementHandle &InOutElementHandle) const
Definition TypedElementHandle.h:533
TTypedElementOwner & operator=(const TTypedElementOwner &)=delete
bool IsSet() const
Definition TypedElementHandle.h:448
void Private_DestroyReleaseRef()
Definition TypedElementHandle.h:573
TTypedElementOwner & operator=(TTypedElementOwner &&InOther)
Definition TypedElementHandle.h:423
void Private_InitializeNoRef(TTypedElementInternalData< ElementDataType > &InData)
Definition TypedElementHandle.h:554
const TTypedElementInternalData< ElementDataType > * Private_GetInternalData() const
Definition TypedElementHandle.h:579
FTypedElementId AcquireId() const
Definition TypedElementHandle.h:490
TTypedElementOwner(TTypedElementOwner &&InOther)
Definition TypedElementHandle.h:416
friend bool operator==(const TTypedElementOwner &InLHS, const TTypedElementOwner &InRHS)
Definition TypedElementHandle.h:539
U * GetData() const
Definition TypedElementHandle.h:467
const FTypedElementId & GetId() const
Definition TypedElementHandle.h:456
FTypedElementHandle AcquireHandle() const
Definition TypedElementHandle.h:519
friend uint32 GetTypeHash(const TTypedElementOwner &InElementOwner)
Definition TypedElementHandle.h:549
void ReleaseId(FTypedElementId &InOutElementId) const
Definition TypedElementHandle.h:505
~TTypedElementOwner()
Definition TypedElementHandle.h:435
friend bool operator!=(const TTypedElementOwner &InLHS, const TTypedElementOwner &InRHS)
Definition TypedElementHandle.h:544
TTypedElementOwner()=default
void Private_DestroyNoRef()
Definition TypedElementHandle.h:565
void Private_InitializeAddRef(TTypedElementInternalData< ElementDataType > &InData)
Definition TypedElementHandle.h:559
Definition TypedElementHandle.h:396