5#include "Containers/Array.h"
18 template <
typename InThreadSafetyMode>
42 template <
typename From,
typename To>
46 if constexpr (std::is_same_v<From, FNotThreadSafeDelegateMode>)
48 return std::is_same_v<To, FWeakObjectPtr>;
50 else if constexpr (std::is_same_v<From, FWeakObjectPtr>)
52 return std::is_same_v<To, FNotThreadSafeDelegateMode>;
64template <
typename InThreadSafetyMode>
79 using typename Super::FReadAccessScope;
80 using Super::GetReadAccessScope;
81 using typename Super::FWriteAccessScope;
82 using Super::GetWriteAccessScope;
101 UE_REQUIRES(UE::Core::Private::BackwardCompatibilityCheck<InThreadSafetyMode, OtherThreadSafetyMode>())
133 UE_REQUIRES(UE::Core::Private::BackwardCompatibilityCheck<InThreadSafetyMode, OtherThreadSafetyMode>())
158 template <
class UObjectTemplate>
159 inline bool IsBound_Internal()
const
230#if UE_WITH_REMOTE_OBJECT_HANDLE
261 template <
class UObjectTemplate>
269 return TEXT(
"<Unbound>" );
277 Ar <<
D.Object <<
D.FunctionName;
313 UE_REQUIRES(UE::Core::Private::BackwardCompatibilityCheck<InThreadSafetyMode, OtherThreadSafetyMode>())
343 UE_REQUIRES(UE::Core::Private::BackwardCompatibilityCheck<InThreadSafetyMode, OtherThreadSafetyMode>())
387 return static_cast< UObject*
>(
Object.GetEvenIfUnreachable() );
400 return static_cast< const UObject*
>(
Object.GetEvenIfUnreachable() );
432 template <
class UObjectTemplate>
443 checkf(
Object.IsValid() !=
false,
TEXT(
"ProcessDelegate() called with no object bound to delegate!" ) );
458 ObjectPtr->ProcessEvent(
Function, Parameters);
468 template<
typename OtherThreadSafetyMode>
471 static_assert(std::is_same_v<ThreadSafetyMode, typename UE::Core::Private::TScriptDelegateTraits<ThreadSafetyMode>::UnicastThreadSafetyModeForMulticasts>);
496template<
typename ThreadSafetyMode>
507template <
typename InThreadSafetyMode>
512 using typename Super::FReadAccessScope;
513 using Super::GetReadAccessScope;
514 using typename Super::FWriteAccessScope;
515 using Super::GetWriteAccessScope;
617 UE_REQUIRES(UE::Core::Private::BackwardCompatibilityCheck<InThreadSafetyMode, OtherThreadSafetyMode>())
671 UE_REQUIRES(UE::Core::Private::BackwardCompatibilityCheck<InThreadSafetyMode, OtherThreadSafetyMode>())
711 UE_REQUIRES(UE::Core::Private::BackwardCompatibilityCheck<InThreadSafetyMode, OtherThreadSafetyMode>())
751 UE_REQUIRES(UE::Core::Private::BackwardCompatibilityCheck<InThreadSafetyMode, OtherThreadSafetyMode>())
824 template <
typename UObjectTemplate>
845 return TEXT(
"<Unbound>" );
855 Ar <<
D.InvocationList;
865 D.CompactInvocationList();
877 if (!Delegate.IsCompactable())
896 D.CompactInvocationList();
899 Slot <<
D.InvocationList;
904 D.CompactInvocationList();
916 template <
class UObjectTemplate>
981 Result.Add(Ref->GetEvenIfUnreachable());
994 if(
CurObject.GetEvenIfUnreachable() !=
nullptr )
1098template<
typename ThreadSafetyMode>
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
#define checkSlow(expr)
Definition AssertionMacros.h:332
#define ensure( InExpression)
Definition AssertionMacros.h:464
#define checkf(expr, format,...)
Definition AssertionMacros.h:315
@ INDEX_NONE
Definition CoreMiscDefines.h:150
#define UE_WITH_REMOTE_OBJECT_HANDLE
Definition CoreMiscDefines.h:620
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
@ PPF_AvoidRemoteObjectMigration
Definition PropertyPortFlags.h:96
#define UE_REQUIRES(...)
Definition Requires.h:86
#define SA_VALUE(Name, Value)
Definition StructuredArchiveNameHelpers.h:77
constexpr uint32 HashCombine(uint32 A, uint32 C)
Definition TypeHash.h:36
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
Definition Archive.h:1208
UE_FORCEINLINE_HINT bool HasAnyPortFlags(uint32 Flags) const
Definition Archive.h:480
UE_FORCEINLINE_HINT bool IsLoading() const
Definition Archive.h:236
UE_FORCEINLINE_HINT bool IsSaving() const
Definition Archive.h:248
Definition ScriptCore.cpp:3282
Definition UnrealType.h:6464
Definition UnrealType.h:6593
Definition UnrealType.h:6643
Definition NameTypes.h:617
CORE_API FString ToString() const
Definition UnrealNames.cpp:3537
bool IsValid() const
Definition NameTypes.h:842
Definition StructuredArchiveSlots.h:144
Definition StructuredArchiveSlots.h:52
UE_API FStructuredArchiveRecord EnterRecord()
Definition StructuredArchiveSlots.h:252
UE_REWRITE SizeType Num() const
Definition Array.h:1144
UE_FORCEINLINE_HINT void RemoveAtSwap(SizeType Index, EAllowShrinking AllowShrinking=UE::Core::Private::AllowShrinkingByDefault< AllocatorType >())
Definition Array.h:2185
SizeType RemoveSingleSwap(const ElementType &Item, EAllowShrinking AllowShrinking=UE::Core::Private::AllowShrinkingByDefault< AllocatorType >())
Definition Array.h:3211
SizeType RemoveAllSwap(const PREDICATE_CLASS &Predicate, EAllowShrinking AllowShrinking=UE::Core::Private::AllowShrinkingByDefault< AllocatorType >())
Definition Array.h:3163
UE_NODEBUG UE_FORCEINLINE_HINT SizeType Add(ElementType &&Item)
Definition Array.h:2696
UE_NODEBUG UE_FORCEINLINE_HINT SIZE_T GetAllocatedSize(void) const
Definition Array.h:1059
SizeType IndexOfByPredicate(Predicate Pred) const
Definition Array.h:1423
UE_FORCEINLINE_HINT SizeType AddUnique(ElementType &&Item)
Definition Array.h:2993
void Empty(SizeType Slack=0)
Definition Array.h:2273
UE_NODEBUG UE_FORCEINLINE_HINT bool ContainsByPredicate(Predicate Pred) const
Definition Array.h:1538
Definition DelegateAccessHandler.h:30
Definition ScriptDelegates.h:509
void AddUniqueInternal(UnicastDelegateType &&InDelegate)
Definition ScriptDelegates.h:1037
SIZE_T GetAllocatedSize() const
Definition ScriptDelegates.h:1005
TMulticastScriptDelegate & operator=(TMulticastScriptDelegate &&Other)
Definition ScriptDelegates.h:565
void RemoveAll(const UObject *Object)
Definition ScriptDelegates.h:795
typename UE::Core::Private::TScriptDelegateTraits< InThreadSafetyMode >::ThreadSafetyMode ThreadSafetyMode
Definition ScriptDelegates.h:520
void Remove(const TScriptDelegate< ThreadSafetyMode > &InDelegate)
Definition ScriptDelegates.h:735
TMulticastScriptDelegate(const TMulticastScriptDelegate &Other)
Definition ScriptDelegates.h:525
void AddUnique(const TScriptDelegate< ThreadSafetyMode > &InDelegate)
Definition ScriptDelegates.h:695
void Add(const TScriptDelegate< OtherThreadSafetyMode > &InDelegate)
Definition ScriptDelegates.h:674
bool Contains(const TScriptDelegate< OtherThreadSafetyMode > &InDelegate) const
Definition ScriptDelegates.h:620
TMulticastScriptDelegate()=default
void Add(const TScriptDelegate< ThreadSafetyMode > &InDelegate)
Definition ScriptDelegates.h:655
void ProcessMulticastDelegate(void *Parameters) const
Definition ScriptDelegates.h:917
TArray< UObject * > GetAllObjectsEvenIfUnreachable() const
Definition ScriptDelegates.h:975
void Remove(const TScriptDelegate< OtherThreadSafetyMode > &InDelegate)
Definition ScriptDelegates.h:754
void RemoveInternal(const UObject *InObject, FName InFunctionName) const
Definition ScriptDelegates.h:1061
TMulticastScriptDelegate & operator=(const TMulticastScriptDelegate &Other)
Definition ScriptDelegates.h:537
bool Contains(const TScriptDelegate< ThreadSafetyMode > &InDelegate) const
Definition ScriptDelegates.h:602
bool IsBound() const
Definition ScriptDelegates.h:589
void AddUnique(const TScriptDelegate< OtherThreadSafetyMode > &InDelegate)
Definition ScriptDelegates.h:714
void Clear()
Definition ScriptDelegates.h:813
TArray< UObject * > GetAllObjects() const
Definition ScriptDelegates.h:954
friend FArchive & operator<<(FArchive &Ar, TMulticastScriptDelegate &D)
Definition ScriptDelegates.h:849
bool Contains(const UObject *InObject, FName InFunctionName) const
Definition ScriptDelegates.h:641
TArray< typename UnicastDelegateType::WeakPtrType * > GetAllObjectRefsEvenIfUnreachable() const
Definition ScriptDelegates.h:986
InvocationListType InvocationList
Definition ScriptDelegates.h:1084
TMulticastScriptDelegate(TMulticastScriptDelegate &&Other)
Definition ScriptDelegates.h:553
void RemoveInternal(const UnicastDelegateType &InDelegate) const
Definition ScriptDelegates.h:1049
void AddInternal(UnicastDelegateType &&InDelegate)
Definition ScriptDelegates.h:1018
void CompactInvocationList() const
Definition ScriptDelegates.h:1074
friend void operator<<(FStructuredArchive::FSlot Slot, TMulticastScriptDelegate &D)
Definition ScriptDelegates.h:887
void Remove(const UObject *InObject, FName InFunctionName)
Definition ScriptDelegates.h:776
FString ToString() const
Definition ScriptDelegates.h:825
Definition ScriptDelegates.h:66
UObject * GetUObjectEvenIfUnreachable()
Definition ScriptDelegates.h:382
static TScriptDelegate CopyFrom(const TScriptDelegate< OtherThreadSafetyMode > &Other)
Definition ScriptDelegates.h:469
const UObject * GetUObjectEvenIfUnreachable() const
Definition ScriptDelegates.h:395
bool IsBoundToObjectEvenIfUnreachable(void const *InUserObject) const
Definition ScriptDelegates.h:215
UE_FORCEINLINE_HINT bool operator!=(const TScriptDelegate &Other) const
Definition ScriptDelegates.h:337
void Clear()
Definition ScriptDelegates.h:251
FName FunctionName
Definition ScriptDelegates.h:488
void Unbind()
Definition ScriptDelegates.h:240
friend void operator<<(FStructuredArchive::FSlot Slot, TScriptDelegate &D)
Definition ScriptDelegates.h:282
void BindUFunction(UObject *InObject, const FName &InFunctionName)
Definition ScriptDelegates.h:180
bool IsBound() const
Definition ScriptDelegates.h:193
UObject * GetUObject()
Definition ScriptDelegates.h:356
FName GetFunctionName() const
Definition ScriptDelegates.h:418
typename UE::Core::Private::TScriptDelegateTraits< InThreadSafetyMode >::ThreadSafetyMode ThreadSafetyMode
Definition ScriptDelegates.h:68
WeakPtrType Object
Definition ScriptDelegates.h:485
const WeakPtrType & GetUObjectRef() const
Definition ScriptDelegates.h:408
TScriptDelegate & operator=(const TScriptDelegate< OtherThreadSafetyMode > &Other)
Definition ScriptDelegates.h:136
UE_FORCEINLINE_HINT bool operator!=(const TScriptDelegate< OtherThreadSafetyMode > &Other) const
Definition ScriptDelegates.h:346
TScriptDelegate(const TScriptDelegate< OtherThreadSafetyMode > &Other)
Definition ScriptDelegates.h:104
friend FArchive & operator<<(FArchive &Ar, TScriptDelegate &D)
Definition ScriptDelegates.h:273
bool operator==(const TScriptDelegate &Other) const
Definition ScriptDelegates.h:291
bool IsCompactable() const
Definition ScriptDelegates.h:226
friend uint32 GetTypeHash(const TScriptDelegate &Delegate)
Definition ScriptDelegates.h:461
WeakPtrType & GetUObjectRef()
Definition ScriptDelegates.h:403
bool operator==(const TScriptDelegate< OtherThreadSafetyMode > &Other) const
Definition ScriptDelegates.h:316
TScriptDelegate & operator=(const TScriptDelegate &Other)
Definition ScriptDelegates.h:112
typename UE::Core::Private::TScriptDelegateTraits< InThreadSafetyMode >::WeakPtrType WeakPtrType
Definition ScriptDelegates.h:69
void ProcessDelegate(void *Parameters) const
Definition ScriptDelegates.h:433
const UObject * GetUObject() const
Definition ScriptDelegates.h:369
bool IsBoundToObject(void const *InUserObject) const
Definition ScriptDelegates.h:204
FString ToString() const
Definition ScriptDelegates.h:262
TScriptDelegate()
Definition ScriptDelegates.h:86
TScriptDelegate(const TScriptDelegate &Other)
Definition ScriptDelegates.h:91
CORE_API FArchive & GetUnderlyingArchive() const
Definition StructuredArchiveSlots.cpp:7
implementation
Definition PlayInEditorLoadingScope.h:8
constexpr bool BackwardCompatibilityCheck()
Definition ScriptDelegates.h:44
Definition WeakObjectPtr.h:49
Definition UnrealTypeTraits.h:172
Definition ScriptDelegates.h:20
FNotThreadSafeNotCheckedDelegateMode UnicastThreadSafetyModeForMulticasts
Definition ScriptDelegates.h:26
InThreadSafetyMode ThreadSafetyMode
Definition ScriptDelegates.h:25