11#include "Containers/Map.h"
65template<ESPMode Mode = ESPMode::ThreadSafe>
69 class IInstanceProvider
74 virtual ~IInstanceProvider() { }
86 struct TFunctionInstanceProvider
87 :
public IInstanceProvider
93 virtual ~TFunctionInstanceProvider()
override { }
106 struct TSharedInstanceProvider
107 :
public IInstanceProvider
113 virtual ~TSharedInstanceProvider() { }
125 struct FThreadInstanceProvider
126 :
public IInstanceProvider
133 virtual ~FThreadInstanceProvider()
override
145 struct TThreadInstanceProvider
146 :
public FThreadInstanceProvider
154 virtual ~TThreadInstanceProvider()
override { }
232 template<
class R,
class T,
typename... P>
281 template<
class R,
class D,
typename... P>
284 static_assert(std::is_same_v<TSharedRef<R, Mode>,
typename D::RetValType>,
"Delegate return type must be TSharedPtr<R>");
328 template<
class R,
typename P0,
typename... P>
342#if (defined(_MSC_VER) && _MSC_VER >= 1900) || defined(__clang__)
353 template<
class R,
typename... P>
376 template<
class R,
class T>
411 Providers.Add(
Name, Provider);
#define check(expr)
Definition AssertionMacros.h:314
SharedPointerInternals::TRawPtrProxy< ObjectType > MakeShareable(ObjectType *InObject)
Definition SharedPointer.h:1947
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
UE::FPlatformRecursiveMutex FCriticalSection
Definition CriticalSection.h:53
ETypeContainerScope
Definition TypeContainer.h:20
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
FRWLock Lock
Definition UnversionedPropertySerialization.cpp:921
Definition ScopeLock.h:141
Definition TypeContainer.h:426
Definition AndroidPlatformMisc.h:14
Definition UnrealString.h.inl:34
Definition SharedPointer.h:692
UE_FORCEINLINE_HINT const bool IsValid() const
Definition SharedPointer.h:1085
Definition SharedPointer.h:153
Definition TlsAutoCleanup.h:26
Definition TypeContainer.h:67
void RegisterFactory(const TFunction< TSharedRef< R, Mode >()> &CreateFunc)
Definition TypeContainer.h:306
TSharedRef< R, Mode > GetInstanceRef() const
Definition TypeContainer.h:203
void RegisterDelegate(D Delegate)
Definition TypeContainer.h:282
TSharedRef< R, Mode > GetInstance() const
Definition TypeContainer.h:181
void AddProvider(const TCHAR *Name, const TSharedPtr< IInstanceProvider > &Provider)
Definition TypeContainer.h:407
bool IsRegistered() const
Definition TypeContainer.h:215
void RegisterFactory(const TFunction< TSharedRef< R, Mode >(TSharedRef< P0, Mode >, TSharedRef< P, Mode >...)> &CreateFunc)
Definition TypeContainer.h:329
void RegisterClass(ETypeContainerScope Scope=ETypeContainerScope::Process)
Definition TypeContainer.h:233
void Unregister()
Definition TypeContainer.h:391
void RegisterInstance(const TSharedRef< T, Mode > &Instance)
Definition TypeContainer.h:377
static uint32 AllocTlsSlot(void)
Definition AndroidPlatformTLS.h:30
static UE_FORCEINLINE_HINT void FreeTlsSlot(uint32 SlotIndex)
Definition AndroidPlatformTLS.h:67
static UE_FORCEINLINE_HINT void * GetTlsValue(uint32 SlotIndex)
Definition AndroidPlatformTLS.h:57
static UE_FORCEINLINE_HINT void SetTlsValue(uint32 SlotIndex, void *Value)
Definition AndroidPlatformTLS.h:47
Definition UnrealTypeTraits.h:191
Definition PointerIsConvertibleFromTo.h:60