11#define UE_API ULANGCORE_API
40 template<
class ObjectType>
46 template<
class ObjectType>
60 void Reference()
const { ++_RefCount; }
61 bool Dereference()
const;
117 static_assert(
AllowNull,
"Unnecessary conversion!");
123 static_assert(
AllowNull,
"Unnecessary conversion!");
129 static_assert(
AllowNull,
"Unnecessary conversion!");
144 template<
class OtherObjectType,
bool OtherAllowNull>
146 template<
class OtherObjectType,
bool OtherAllowNull>
149 template<
class OtherObjectType,
bool OtherAllowNull>
151 template<
class OtherObjectType,
bool OtherAllowNull>
154 template<
class OtherObjectType,
bool OtherAllowNull>
156 template<
class OtherObjectType,
bool OtherAllowNull>
159 template<
class OtherObjectType,
bool OtherAllowNull>
161 template<
class OtherObjectType,
bool OtherAllowNull>
176 template <
typename FuncType,
typename...
ArgTypes>
180 Invoke(uLang::ForwardArg<FuncType>(Func), Result, uLang::ForwardArg<ArgTypes>(Args)...);
207 template<
class OtherObjectType,
bool OtherAllowNull>
230 template<
class OtherObjectType,
bool OtherAllowNull>
242 Other._Object =
nullptr;
252 if (
Object->Dereference())
284template<
class ObjectType>
288template<
class ObjectType>
292template<
class ObjectType>
296template<
class ObjectType>
309 ULANG_ASSERTF(_RefCount > 0,
"Tried to dereference an object that has no references!");
310 return (--_RefCount == 0);
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
const bool
Definition NetworkReplayStreaming.h:178
#define UE_API
Definition SColorGradingComponentViewer.h:12
#define ULANG_ASSERT(expr)
Definition Common.h:285
#define ULANG_FORCEINLINE
Definition Common.h:188
#define ULANG_ASSERTF(expr, format,...)
Definition Common.h:290
Raw memory allocator that allocates memory from the global heap.
Definition Allocator.h:64
Definition SharedPointer.h:28
static TSPtrG< ObjectType, false, CHeapRawAllocator > SharedThis(ObjectType *This)
Definition SharedPointer.h:41
virtual UE_API ~CSharedMix()
Definition SharedPointer.cpp:8
CSharedMix()
Definition SharedPointer.h:31
uint32_t GetRefCount() const
Definition SharedPointer.h:37
static TSPtrG< const ObjectType, false, CHeapRawAllocator > SharedThis(const ObjectType *This)
Definition SharedPointer.h:47
CSharedMix & operator=(const CSharedMix &Other)=delete
CSharedMix(const CSharedMix &Other)=delete
Definition SharedPointerArray.h:21
Definition SharedPointer.h:77
ULANG_FORCEINLINE bool operator!=(OtherObjectType *Object) const
Definition SharedPointer.h:152
ReleaseFuncType _ReleaseFunc
Definition SharedPointer.h:280
ULANG_FORCEINLINE ObjectType & operator*() const
Definition SharedPointer.h:109
ULANG_FORCEINLINE friend void Swap(TSPtrG &A, TSPtrG &B)
Definition SharedPointer.h:173
ULANG_FORCEINLINE void Reset()
Definition SharedPointer.h:113
ULANG_FORCEINLINE const TSPtrG< OtherObjectType, AllowNull, AllocatorType, AllocatorArgsType... > & As() const
Definition SharedPointer.h:137
ULANG_FORCEINLINE TSPtrG & operator=(const TSPtrG &Other)
Definition SharedPointer.h:99
ULANG_FORCEINLINE TSPtrG & operator=(TSPtrG< OtherObjectType, OtherAllowNull, AllocatorType, AllocatorArgsType... > &&Other)
Definition SharedPointer.h:104
ULANG_FORCEINLINE bool operator==(const TSPtrG< OtherObjectType, OtherAllowNull, AllocatorType, AllocatorArgsType... > &Other) const
Definition SharedPointer.h:145
ULANG_FORCEINLINE TSPtrG & SetNew(CtorArgsType &&... CtorArgs)
Definition SharedPointer.h:92
ULANG_FORCEINLINE void Release()
Let go of our object.
Definition SharedPointer.h:262
ULANG_FORCEINLINE TSPtrG & AssignCopy(const TSPtrG< OtherObjectType, OtherAllowNull, AllocatorType, AllocatorArgsType... > &Other)
Definition SharedPointer.h:208
ULANG_FORCEINLINE TSPtrG< ObjectType, false, AllocatorType, AllocatorArgsType... > AsRef() &&
Definition SharedPointer.h:121
ULANG_FORCEINLINE TSPtrG Map(FuncType &&Func, ArgTypes &&... Args) &&
Definition SharedPointer.h:177
ULANG_FORCEINLINE TSPtrG< ObjectType, false, AllocatorType, AllocatorArgsType... > & AsRef() &
Definition SharedPointer.h:115
ULANG_FORCEINLINE TSPtrG & AssignMove(TSPtrG< OtherObjectType, OtherAllowNull, AllocatorType, AllocatorArgsType... > &&Other)
Definition SharedPointer.h:231
ULANG_FORCEINLINE TSPtrG(TSPtrG< OtherObjectType, OtherAllowNull, AllocatorType, AllocatorArgsType... > &&Other)
Definition SharedPointer.h:88
ULANG_FORCEINLINE ObjectType * Get() const
Definition SharedPointer.h:111
ULANG_FORCEINLINE bool operator==(const TSPtrG &Other) const
Definition SharedPointer.h:143
ULANG_FORCEINLINE bool operator!=(const TSPtrG &Other) const
Definition SharedPointer.h:148
AllocatorType _Allocator
Definition SharedPointer.h:273
static ULANG_FORCEINLINE TSPtrG New(AllocatorArgsType &&... AllocatorArgs, CtorArgsType &&... CtorArgs)
Definition SharedPointer.h:94
ULANG_FORCEINLINE ObjectType * operator->() const
Definition SharedPointer.h:110
ULANG_FORCEINLINE bool IsValid() const
Definition SharedPointer.h:169
ULANG_FORCEINLINE bool operator!=(const TSPtrG< OtherObjectType, OtherAllowNull, AllocatorType, AllocatorArgsType... > &Other) const
Definition SharedPointer.h:150
ULANG_FORCEINLINE TSPtrG(NullPtrType NullPtr=nullptr)
Definition SharedPointer.h:82
ULANG_FORCEINLINE TSPtrG & operator=(TSPtrG &&Other)
Definition SharedPointer.h:102
ULANG_FORCEINLINE TSPtrG< OtherObjectType, AllowNull, AllocatorType, AllocatorArgsType... > & As()
Definition SharedPointer.h:135
ULANG_FORCEINLINE bool operator==(NullPtrType) const
Definition SharedPointer.h:141
ULANG_FORCEINLINE TSPtrG(ObjectType *Object, const AllocatorType &Allocator)
Definition SharedPointer.h:195
ULANG_FORCEINLINE bool operator!() const
Definition SharedPointer.h:168
ULANG_FORCEINLINE const AllocatorType & GetAllocator() const
Definition SharedPointer.h:112
friend class TSPtrG
Definition SharedPointer.h:186
ULANG_FORCEINLINE bool operator!=(NullPtrType) const
Definition SharedPointer.h:142
ULANG_FORCEINLINE ~TSPtrG()
Definition SharedPointer.h:89
ULANG_FORCEINLINE bool operator>(const TSPtrG &Other) const
Definition SharedPointer.h:158
ObjectType * _Object
Pointer to original object.
Definition SharedPointer.h:269
ULANG_FORCEINLINE void EnableRelease()
Set the release function pointer to a valid value.
Definition SharedPointer.h:248
ULANG_FORCEINLINE bool operator<(const TSPtrG &Other) const
Definition SharedPointer.h:153
ULANG_FORCEINLINE bool operator==(OtherObjectType *Object) const
Definition SharedPointer.h:147
void(*)(ObjectType *, const AllocatorType &) ReleaseFuncType
Definition SharedPointer.h:279
ULANG_FORCEINLINE TSPtrG(const TSPtrG< OtherObjectType, OtherAllowNull, AllocatorType, AllocatorArgsType... > &Other)
Definition SharedPointer.h:85
ULANG_FORCEINLINE TSPtrG & operator=(NullPtrType)
Definition SharedPointer.h:98
ULANG_FORCEINLINE TSPtrG(TSPtrG &&Other)
Definition SharedPointer.h:86
ULANG_FORCEINLINE const TSPtrG< ObjectType, false, AllocatorType, AllocatorArgsType... > & AsRef() const &
Definition SharedPointer.h:127
ULANG_FORCEINLINE TSPtrG(const TSPtrG &Other)
Definition SharedPointer.h:83
Definition SharedPointerSet.h:19
Definition VVMEngineEnvironment.h:23
std::nullptr_t NullPtrType
Definition Common.h:325
@ DefaultInit
Definition Common.h:378
ULANG_FORCEINLINE auto Invoke(FuncType &&Func, ArgTypes &&... Args) -> decltype(uLang::ForwardArg< FuncType >(Func)(uLang::ForwardArg< ArgTypes >(Args)...))
Definition Invoke.h:47
ULANG_FORCEINLINE T && ForwardArg(typename TRemoveReference< T >::Type &Obj)
Definition References.h:115
TEnableIf< TUseBitwiseSwap< T >::Value >::Type Swap(T &A, T &B)
Definition Storage.h:138
ULANG_FORCEINLINE TRemoveReference< T >::Type && Move(T &&Obj)
Definition References.h:86
@ false
Definition radaudio_common.h:23