10#include "Containers/Array.h"
11#include "Containers/Map.h"
126template<
class CastToType,
class CastFromType, ESPMode Mode >
137 template <
typename ObjectType, ESPMode Mode>
151template<
class ObjectType, ESPMode InMode >
155 static_assert(!std::is_void_v<ObjectType>,
"TSharedRef<void> is not supported - use TSharedPtr instead");
170 UE_REQUIRES(std::is_convertible_v<OtherType*, ObjectType*>)
188 UE_REQUIRES(std::is_convertible_v<OtherType*, ObjectType*>)
203 : Object(new ObjectType())
219 UE_REQUIRES(std::is_convertible_v<OtherType*, ObjectType*>)
244 UE_REQUIRES(std::is_convertible_v<OtherType*, ObjectType*>)
269 UE_REQUIRES(std::is_convertible_v<OtherType*, ObjectType*>)
292 UE_REQUIRES(std::is_convertible_v<OtherType*, ObjectType*>)
296 , SharedReferenceCount(
InSharedRef.SharedReferenceCount )
308 template <
typename OtherType>
311 , SharedReferenceCount(
InSharedRef.SharedReferenceCount )
323 template <
typename OtherType>
326 , SharedReferenceCount(
InSharedRef.SharedReferenceCount )
337 template <
typename OtherType>
344 check( InObject !=
nullptr );
349 , SharedReferenceCount(
InSharedRef.SharedReferenceCount )
354 , SharedReferenceCount(
InSharedRef.SharedReferenceCount )
391 UE_REQUIRES(std::is_convertible_v<OtherType*, ObjectType*>)
414 UE_REQUIRES(std::is_convertible_v<OtherType*, ObjectType*>)
437 UE_REQUIRES(std::is_convertible_v<OtherType*, ObjectType*>)
513 return SharedReferenceCount.GetSharedReferenceCount();
529 return SharedReferenceCount.IsUnique();
550 template <
typename OtherType>
553 return this->Object == &Rhs.Get();
556 template <
typename OtherType>
564 template <
typename OtherType>
567 return this->Object == Rhs.Pin().Get();
570 template <
typename OtherType>
573 return this->Object < &Rhs.Get();
577 template<
class OtherType>
582 check(InObject !=
nullptr);
597 UE_REQUIRES(std::is_convertible_v<OtherType*, ObjectType*>)
601 , SharedReferenceCount(
InSharedPtr.SharedReferenceCount )
610 UE_REQUIRES(std::is_convertible_v<OtherType*, ObjectType*>)
631 return Object !=
nullptr;
635 template<
class OtherType, ESPMode OtherMode >
friend class TSharedRef;
638 template<
class OtherType, ESPMode OtherMode >
friend class TSharedPtr;
639 template<
class OtherType, ESPMode OtherMode >
friend class TWeakPtr;
652 #pragma warning(push)
653 #pragma warning(disable : 4396)
679template <
class ObjectType, ESPMode Mode>
690template<
class ObjectType, ESPMode InMode >
703 , SharedReferenceCount()
715 UE_REQUIRES(std::is_convertible_v<OtherType*, ObjectType*>)
736 UE_REQUIRES(std::is_convertible_v<OtherType*, ObjectType*>)
755 UE_REQUIRES(std::is_convertible_v<OtherType*, ObjectType*>)
775 UE_REQUIRES(std::is_convertible_v<OtherType*, ObjectType*>)
795 UE_REQUIRES(std::is_convertible_v<OtherType*, ObjectType*>)
814 UE_REQUIRES(std::is_convertible_v<OtherType*, ObjectType*>)
818 , SharedReferenceCount(
InSharedPtr.SharedReferenceCount )
824 , SharedReferenceCount(
InSharedPtr.SharedReferenceCount )
844 UE_REQUIRES(std::is_convertible_v<OtherType*, ObjectType*>)
848 , SharedReferenceCount(
InSharedRef.SharedReferenceCount )
862 template <
typename OtherType>
865 , SharedReferenceCount(
InSharedPtr.SharedReferenceCount )
877 template <
typename OtherType>
880 , SharedReferenceCount(
InSharedPtr.SharedReferenceCount )
891 template <
typename OtherType>
905 template <
typename OtherType>
920 template <
typename OtherType>
976 UE_REQUIRES(std::is_convertible_v<OtherType*, ObjectType*>)
995 UE_REQUIRES(std::is_convertible_v<OtherType*, ObjectType*>)
1013 typename DeleterType
1014 UE_REQUIRES(std::is_convertible_v<OtherType*, ObjectType*>)
1077 return Object !=
nullptr;
1087 return Object !=
nullptr;
1133 return SharedReferenceCount.GetSharedReferenceCount();
1145 return SharedReferenceCount.IsUnique();
1155 : Object((ObjectType*)-1)
1160 return Object == (ObjectType*)-1;
1166 template <
typename OtherType>
1169 return this->Object == Rhs.Get();
1172 template <
typename OtherType>
1175 return this->Object == Rhs.Pin().Get();
1180 return !this->Object;
1183 template <
typename OtherType>
1186 return this->Object < Rhs.Get();
1201 UE_REQUIRES(std::is_convertible_v<OtherType*, ObjectType*>)
1205 , SharedReferenceCount(
InWeakPtr.WeakReferenceCount )
1209 if( SharedReferenceCount.IsValid() )
1226 UE_REQUIRES(std::is_convertible_v<OtherType*, ObjectType*>)
1234 if (SharedReferenceCount.IsValid())
1242 template<
class OtherType, ESPMode OtherMode >
friend class TSharedPtr;
1245 template<
class OtherType, ESPMode OtherMode >
friend class TSharedRef;
1246 template<
class OtherType, ESPMode OtherMode >
friend class TWeakPtr;
1270 template<
class ObjectType, ESPMode Mode>
1282template <
class ObjectType, ESPMode Mode>
1293template<
class ObjectType, ESPMode InMode >
1304 , WeakReferenceCount()
1316 UE_REQUIRES(std::is_convertible_v<OtherType*, ObjectType*>)
1320 , WeakReferenceCount(
InSharedRef.SharedReferenceCount )
1331 UE_REQUIRES(std::is_convertible_v<OtherType*, ObjectType*>)
1335 , WeakReferenceCount(
InSharedPtr.SharedReferenceCount )
1347 template <
typename OtherType>
1350 , WeakReferenceCount(
InWeakPtr.WeakReferenceCount)
1362 template <
typename OtherType>
1365 , WeakReferenceCount(
InWeakPtr.WeakReferenceCount)
1377 UE_REQUIRES(std::is_convertible_v<OtherType*, ObjectType*>)
1381 , WeakReferenceCount(
InWeakPtr.WeakReferenceCount )
1387 UE_REQUIRES(std::is_convertible_v<OtherType*, ObjectType*>)
1398 , WeakReferenceCount(
InWeakPtr.WeakReferenceCount )
1450 UE_REQUIRES(std::is_convertible_v<OtherType*, ObjectType*>)
1455 WeakReferenceCount =
InWeakPtr.WeakReferenceCount;
1461 UE_REQUIRES(std::is_convertible_v<OtherType*, ObjectType*>)
1479 UE_REQUIRES(std::is_convertible_v<OtherType*, ObjectType*>)
1484 WeakReferenceCount =
InSharedRef.SharedReferenceCount;
1495 UE_REQUIRES(std::is_convertible_v<OtherType*, ObjectType*>)
1500 WeakReferenceCount =
InSharedPtr.SharedReferenceCount;
1537 return Object !=
nullptr && WeakReferenceCount.IsValid();
1559 return ::PointerHash( Object );
1569 : Object((ObjectType*)-1)
1574 return Object == (ObjectType*)-1;
1580 template <
typename OtherType>
1583 return this->
Pin().Get() == Rhs.
Pin().Get();
1591 template <
typename OtherType>
1594 return this->
Pin().Get() < Rhs.
Pin().Get();
1599 template<
class OtherType, ESPMode OtherMode >
friend class TWeakPtr;
1602 template<
class OtherType, ESPMode OtherMode >
friend class TSharedPtr;
1627template <
class ObjectType, ESPMode Mode>
1638template<
class ObjectType, ESPMode Mode >
1705 template<
typename Sub
objectType >
1731 check( Result.Pin().Get() ==
this );
1749 check( Result.Pin().Get() ==
this );
1763 template <
typename Sub
objectType>
1779 template<
class OtherType >
1793 template<
class OtherType >
1806 template<
class SharedPtrType, ESPMode SharedPtrMode,
class OtherType >
1809 static_assert(
SharedPtrMode == Mode,
"You cannot use a TSharedPtr of one mode with a type which inherits TSharedFromThis of another mode.");
1822 template<
class SharedRefType, ESPMode SharedPtrMode,
class OtherType >
1825 static_assert(
SharedPtrMode == Mode,
"You cannot use a TSharedPtr of one mode with a type which inherits TSharedFromThis of another mode.");
1850#ifndef UE_HEADER_UNITS
1854 static_assert(
sizeof(
UObjectTestOverload((ObjectType*)
nullptr)) ==
sizeof(
int16),
"TSharedFromThis is not supported on UObjects");
1885template<
class CastToType,
class CastFromType, ESPMode Mode >
1897template<
class CastToType,
class CastFromType, ESPMode Mode >
1909template<
class CastToType,
class CastFromType, ESPMode Mode >
1921template<
class CastToType,
class CastFromType, ESPMode Mode >
1933template<
class CastToType,
class CastFromType, ESPMode Mode >
1946template<
class ObjectType >
1957 checkf(!InObject || !InObject->DoesSharedInstanceExist(),
TEXT(
"Trying to share an already-shared object"));
1970template<
class ObjectType,
class DeleterType >
1981 checkf(!InObject || !InObject->DoesSharedInstanceExist(),
TEXT(
"Trying to share an already-shared object"));
2020template <
class Type>
2039template <
class KeyType,
class ValueType>
2061template <
typename ObjectType, ESPMode Mode>
2074template <
typename ObjectType, ESPMode Mode>
2087template <
typename ObjectType, ESPMode Mode>
#define checkSlow(expr)
Definition AssertionMacros.h:332
#define check(expr)
Definition AssertionMacros.h:314
#define checkf(expr, format,...)
Definition AssertionMacros.h:315
void EnsureRetrievingVTablePtrDuringCtor(const TCHAR *CtorSignature)
Definition CoreMisc.cpp:436
constexpr bool TIsTSharedPtr_V
Definition SharedPointer.h:1262
TSharedRef< InObjectType, InMode > MakeShared(InArgTypes &&... Args)
Definition SharedPointer.h:2009
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > ConstCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:1910
constexpr bool TIsTSharedRef_V
Definition SharedPointer.h:673
SharedPointerInternals::TRawPtrProxy< ObjectType > MakeShareable(ObjectType *InObject)
Definition SharedPointer.h:1947
constexpr bool TIsTWeakPtr_V
Definition SharedPointer.h:1617
void CleanupPointerMap(TMap< TWeakPtr< KeyType >, ValueType > &PointerMap)
Definition SharedPointer.h:2040
UE_FORCEINLINE_HINT TWeakPtr< CastToType, Mode > StaticCastWeakPtr(TWeakPtr< CastFromType, Mode > const &InWeakPtr)
Definition SharedPointer.h:1898
UE_FORCEINLINE_HINT TSharedPtr< CastToType, Mode > ConstCastSharedPtr(TSharedPtr< CastFromType, Mode > const &InSharedPtr)
Definition SharedPointer.h:1922
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
uint32 GetTypeHash(const TSharedRef< ObjectType, Mode > &InSharedRef)
Definition SharedPointer.h:2062
UE_FORCEINLINE_HINT TWeakPtr< CastToType, Mode > ConstCastWeakPtr(TWeakPtr< CastFromType, Mode > const &InWeakPtr)
Definition SharedPointer.h:1934
void CleanupPointerArray(TArray< TWeakPtr< Type > > &PointerArray)
Definition SharedPointer.h:2021
UE_FORCEINLINE_HINT TSharedPtr< CastToType, Mode > StaticCastSharedPtr(TSharedPtr< CastFromType, Mode > const &InSharedPtr)
Definition SharedPointer.h:1886
void Init()
Definition LockFreeList.h:4
#define DECLARE_TEMPLATE_INTRINSIC_TYPE_LAYOUT(TemplatePrefix, T)
Definition MemoryLayout.h:661
const bool
Definition NetworkReplayStreaming.h:178
#define UE_REQUIRES(...)
Definition Requires.h:86
#define UE_REQUIRES_EXPR(...)
Definition Requires.h:89
ESPMode
Definition SharedPointerFwd.h:12
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
Definition MemoryImageWriter.h:14
CORE_API uint32 WriteBytes(const void *Data, uint32 Size)
Definition MemoryImage.cpp:2143
Definition SharedPointerInternals.h:535
Definition SharedPointerInternals.h:715
Definition SharedPointerInternals.h:400
Definition SharedPointerInternals.h:45
UE_NODEBUG UE_FORCEINLINE_HINT SizeType Add(ElementType &&Item)
Definition Array.h:2696
Definition UnrealString.h.inl:34
Definition SharedPointer.h:1640
TSharedRef< ObjectType, Mode > AsShared()
Definition SharedPointer.h:1650
TWeakPtr< SubobjectType, Mode > AsWeakSubobject(SubobjectType *SubobjectPtr) const
Definition SharedPointer.h:1764
TSharedRef< SubobjectType, Mode > AsSharedSubobject(SubobjectType *SubobjectPtr) const
Definition SharedPointer.h:1706
static UE_FORCEINLINE_HINT TSharedRef< OtherType const, Mode > SharedThis(const OtherType *ThisPtr)
Definition SharedPointer.h:1794
TWeakPtr< ObjectType, Mode > AsWeak()
Definition SharedPointer.h:1718
UE_FORCEINLINE_HINT TSharedFromThis & operator=(TSharedFromThis const &)
Definition SharedPointer.h:1862
TSharedFromThis()
Definition SharedPointer.h:1848
TSharedFromThis(TSharedFromThis const &)
Definition SharedPointer.h:1859
void UpdateWeakReferenceInternal(TSharedRef< SharedRefType, SharedPtrMode > const *InSharedRef, OtherType *InObject) const
Definition SharedPointer.h:1823
TSharedRef< ObjectType const, Mode > AsShared() const
Definition SharedPointer.h:1677
TWeakPtr< ObjectType const, Mode > AsWeak() const
Definition SharedPointer.h:1736
UE_FORCEINLINE_HINT bool DoesSharedInstanceExist() const
Definition SharedPointer.h:1840
void UpdateWeakReferenceInternal(TSharedPtr< SharedPtrType, SharedPtrMode > const *InSharedPtr, OtherType *InObject) const
Definition SharedPointer.h:1807
static UE_FORCEINLINE_HINT TSharedRef< OtherType, Mode > SharedThis(OtherType *ThisPtr)
Definition SharedPointer.h:1780
~TSharedFromThis()
Definition SharedPointer.h:1868
Definition SharedPointer.h:692
UE_FORCEINLINE_HINT TWeakPtr< ObjectType, Mode > ToWeakPtr() const
Definition SharedPointer.h:1055
DummyObjectType & operator*() const
Definition SharedPointer.h:1099
TSharedPtr(SharedPointerInternals::TRawPtrProxyWithDeleter< OtherType, DeleterType > &&InRawPtrProxy)
Definition SharedPointer.h:797
UE_FORCEINLINE_HINT int32 GetSharedReferenceCount() const
Definition SharedPointer.h:1131
TSharedPtr(SharedPointerInternals::TRawPtrProxy< OtherType > const &InRawPtrProxy)
Definition SharedPointer.h:757
TSharedPtr(TSharedPtr const &InSharedPtr)
Definition SharedPointer.h:822
bool UEOpEquals(FIntrusiveUnsetOptionalState) const
Definition SharedPointer.h:1158
friend class TSharedPtr
Definition SharedPointer.h:1242
TSharedPtr(FIntrusiveUnsetOptionalState)
Definition SharedPointer.h:1154
TSharedPtr(TSharedPtr< OtherType, Mode > &&OtherSharedPtr, ObjectType *InObject)
Definition SharedPointer.h:906
UE_REWRITE bool UEOpEquals(TYPE_OF_NULLPTR) const
Definition SharedPointer.h:1178
TSharedPtr(TSharedPtr< OtherType, Mode > const &InSharedPtr, SharedPointerInternals::FConstCastTag)
Definition SharedPointer.h:878
static constexpr ESPMode Mode
Definition SharedPointer.h:695
UE_FORCEINLINE_HINT ObjectType * Get() const
Definition SharedPointer.h:1065
UE_REWRITE bool UEOpEquals(const TWeakPtr< OtherType, Mode > &Rhs) const
Definition SharedPointer.h:1173
TSharedPtr(SharedPointerInternals::TRawPtrProxyWithDeleter< OtherType, DeleterType > const &InRawPtrProxy)
Definition SharedPointer.h:777
TSharedPtr(TSharedPtr &&InSharedPtr)
Definition SharedPointer.h:828
bool UEOpLessThan(const TSharedPtr< OtherType, Mode > &Rhs) const
Definition SharedPointer.h:1184
TSharedRef< ObjectType, Mode > ToSharedRef() &&
Definition SharedPointer.h:1042
TSharedPtr & operator=(SharedPointerInternals::TRawPtrProxyWithDeleter< OtherType, DeleterType > const &InRawPtrProxy)
Definition SharedPointer.h:997
TSharedPtr(TSharedPtr< OtherType, Mode > const &InSharedPtr, SharedPointerInternals::FStaticCastTag)
Definition SharedPointer.h:863
bool UEOpEquals(const TSharedPtr< OtherType, Mode > &Rhs) const
Definition SharedPointer.h:1167
TSharedPtr(OtherType *InObject)
Definition SharedPointer.h:717
TSharedRef< ObjectType, Mode > ToSharedRef() const &
Definition SharedPointer.h:1028
static constexpr bool bHasIntrusiveUnsetOptionalState
Definition SharedPointer.h:1151
UE_FORCEINLINE_HINT bool IsUnique() const
Definition SharedPointer.h:1143
UE_FORCEINLINE_HINT void Reset()
Definition SharedPointer.h:1120
TSharedPtr(TSharedPtr< OtherType, Mode > const &InSharedPtr)
Definition SharedPointer.h:816
ObjectType ElementType
Definition SharedPointer.h:694
TSharedPtr(OtherType *InObject, DeleterType &&InDeleter)
Definition SharedPointer.h:738
ObjectType * operator->() const
Definition SharedPointer.h:1110
TSharedPtr & operator=(SharedPointerInternals::FNullTag *)
Definition SharedPointer.h:932
TSharedPtr(TSharedPtr< OtherType, Mode > const &OtherSharedPtr, ObjectType *InObject)
Definition SharedPointer.h:892
PGO_LINK_DISABLE_WARNINGS TSharedPtr & operator=(TSharedPtr &&InSharedPtr)
Definition SharedPointer.h:954
TSharedPtr(TSharedRef< OtherType, Mode > const &InSharedRef)
Definition SharedPointer.h:846
UE_FORCEINLINE_HINT const bool IsValid() const
Definition SharedPointer.h:1085
PGO_LINK_ENABLE_WARNINGS TSharedPtr & operator=(SharedPointerInternals::TRawPtrProxy< OtherType > const &InRawPtrProxy)
Definition SharedPointer.h:978
TSharedPtr(TSharedRef< OtherType, Mode > const &OtherSharedRef, ObjectType *InObject)
Definition SharedPointer.h:921
TSharedPtr(SharedPointerInternals::FNullTag *=nullptr)
Definition SharedPointer.h:701
TSharedPtr & operator=(TSharedPtr const &InSharedPtr)
Definition SharedPointer.h:945
TSharedPtr & operator=(SharedPointerInternals::TRawPtrProxyWithDeleter< OtherType, DeleterType > &&InRawPtrProxy)
Definition SharedPointer.h:1016
Definition SharedPointer.h:153
TSharedRef(FIntrusiveUnsetOptionalState)
Definition SharedPointer.h:538
TSharedRef(TSharedRef const &InSharedRef)
Definition SharedPointer.h:347
TSharedRef(SharedPointerInternals::TRawPtrProxy< OtherType > const &InRawPtrProxy)
Definition SharedPointer.h:221
bool UEOpLessThan(const TSharedRef< OtherType, Mode > &Rhs) const
Definition SharedPointer.h:571
TSharedRef & operator=(SharedPointerInternals::TRawPtrProxy< OtherType > const &InRawPtrProxy)
Definition SharedPointer.h:393
TSharedRef(TSharedRef &&InSharedRef)
Definition SharedPointer.h:352
ObjectType & operator*() const
Definition SharedPointer.h:486
TSharedRef(TSharedRef< OtherType, Mode > const &OtherSharedRef, ObjectType *InObject)
Definition SharedPointer.h:338
UE_FORCEINLINE_HINT bool IsUnique() const
Definition SharedPointer.h:527
TSharedRef(SharedPointerInternals::TRawPtrProxyWithDeleter< OtherType, DeleterType > const &InRawPtrProxy)
Definition SharedPointer.h:246
friend class TSharedRef
Definition SharedPointer.h:635
UE_FORCEINLINE_HINT TSharedPtr< ObjectType, Mode > ToSharedPtr() const
Definition SharedPointer.h:454
TSharedRef(OtherType *InObject)
Definition SharedPointer.h:172
TSharedRef(TSharedRef< OtherType, Mode > const &InSharedRef, SharedPointerInternals::FStaticCastTag)
Definition SharedPointer.h:309
TSharedRef & operator=(TSharedRef &&InSharedRef)
Definition SharedPointer.h:375
TSharedRef & operator=(SharedPointerInternals::TRawPtrProxyWithDeleter< OtherType, DeleterType > &&InRawPtrProxy)
Definition SharedPointer.h:439
TSharedRef & operator=(SharedPointerInternals::TRawPtrProxyWithDeleter< OtherType, DeleterType > const &InRawPtrProxy)
Definition SharedPointer.h:416
ObjectType ElementType
Definition SharedPointer.h:157
static constexpr bool bHasIntrusiveUnsetOptionalState
Definition SharedPointer.h:535
TSharedRef(SharedPointerInternals::TRawPtrProxyWithDeleter< OtherType, DeleterType > &&InRawPtrProxy)
Definition SharedPointer.h:271
TSharedRef(TSharedRef< OtherType, Mode > const &InSharedRef)
Definition SharedPointer.h:294
static constexpr ESPMode Mode
Definition SharedPointer.h:158
ObjectType * operator->() const
Definition SharedPointer.h:498
ObjectType & Get() const
Definition SharedPointer.h:474
UE_FORCEINLINE_HINT int32 GetSharedReferenceCount() const
Definition SharedPointer.h:511
bool UEOpEquals(const TWeakPtr< OtherType, Mode > &Rhs) const
Definition SharedPointer.h:565
bool UEOpEquals(const TSharedPtr< OtherType, Mode > &Rhs) const
Definition SharedPointer.h:557
TSharedRef()
Definition SharedPointer.h:202
bool UEOpEquals(const TSharedRef< OtherType, Mode > &Rhs) const
Definition SharedPointer.h:551
TSharedRef(OtherType *InObject, DeleterType &&InDeleter)
Definition SharedPointer.h:190
TSharedRef(TSharedRef< OtherType, Mode > const &InSharedRef, SharedPointerInternals::FConstCastTag)
Definition SharedPointer.h:324
UE_FORCEINLINE_HINT TWeakPtr< ObjectType, Mode > ToWeakPtr() const
Definition SharedPointer.h:464
bool UEOpEquals(FIntrusiveUnsetOptionalState) const
Definition SharedPointer.h:542
TSharedRef & operator=(TSharedRef const &InSharedRef)
Definition SharedPointer.h:368
Definition SharedPointer.h:1295
UE_FORCEINLINE_HINT bool HasSameObject(const void *InOtherPtr) const
Definition SharedPointer.h:1552
TWeakPtr(TWeakPtr< OtherType, Mode > const &InWeakPtr, SharedPointerInternals::FConstCastTag)
Definition SharedPointer.h:1363
UE_FORCEINLINE_HINT TSharedPtr< ObjectType, Mode > Pin() const &
Definition SharedPointer.h:1512
UE_FORCEINLINE_HINT TSharedPtr< ObjectType, Mode > Pin() &&
Definition SharedPointer.h:1525
TWeakPtr & operator=(TSharedPtr< OtherType, Mode > const &InSharedPtr)
Definition SharedPointer.h:1497
TWeakPtr(TSharedRef< OtherType, Mode > const &InSharedRef)
Definition SharedPointer.h:1318
friend class TWeakPtr
Definition SharedPointer.h:1599
TWeakPtr & operator=(TWeakPtr< OtherType, Mode > const &InWeakPtr)
Definition SharedPointer.h:1452
bool UEOpLessThan(const TWeakPtr< OtherType, Mode > &Rhs) const
Definition SharedPointer.h:1592
bool UEOpEquals(FIntrusiveUnsetOptionalState) const
Definition SharedPointer.h:1572
static constexpr bool bHasIntrusiveUnsetOptionalState
Definition SharedPointer.h:1565
TWeakPtr(TWeakPtr &&InWeakPtr)
Definition SharedPointer.h:1402
UE_FORCEINLINE_HINT uint32 GetWeakPtrTypeHash() const
Definition SharedPointer.h:1557
TWeakPtr(TWeakPtr< OtherType, Mode > &&InWeakPtr)
Definition SharedPointer.h:1389
TWeakPtr(TWeakPtr< OtherType, Mode > const &InWeakPtr)
Definition SharedPointer.h:1379
TWeakPtr(TWeakPtr< OtherType, Mode > const &InWeakPtr, SharedPointerInternals::FStaticCastTag)
Definition SharedPointer.h:1348
TWeakPtr(TSharedPtr< OtherType, Mode > const &InSharedPtr)
Definition SharedPointer.h:1333
TWeakPtr(FIntrusiveUnsetOptionalState)
Definition SharedPointer.h:1568
UE_FORCEINLINE_HINT bool IsValid() const
Definition SharedPointer.h:1535
UE_FORCEINLINE_HINT void Reset()
Definition SharedPointer.h:1544
TWeakPtr & operator=(TSharedRef< OtherType, Mode > const &InSharedRef)
Definition SharedPointer.h:1481
bool UEOpEquals(const TWeakPtr< OtherType, Mode > &Rhs) const
Definition SharedPointer.h:1581
UE_REWRITE bool UEOpEquals(TYPE_OF_NULLPTR) const
Definition SharedPointer.h:1586
TWeakPtr & operator=(TWeakPtr &&InWeakPtr)
Definition SharedPointer.h:1431
TWeakPtr(TWeakPtr const &InWeakPtr)
Definition SharedPointer.h:1396
TWeakPtr & operator=(TWeakPtr const &InWeakPtr)
Definition SharedPointer.h:1424
TWeakPtr & operator=(SharedPointerInternals::FNullTag *)
Definition SharedPointer.h:1413
static constexpr ESPMode Mode
Definition SharedPointer.h:1298
ObjectType ElementType
Definition SharedPointer.h:1297
TWeakPtr & operator=(TWeakPtr< OtherType, Mode > &&InWeakPtr)
Definition SharedPointer.h:1463
TWeakPtr(SharedPointerInternals::FNullTag *=nullptr)
Definition SharedPointer.h:1302
UE_NODEBUG void IntrinsicWriteMemoryImage(FMemoryImageWriter &Writer, const TArray< T, AllocatorType > &Object, const FTypeLayoutDesc &)
Definition Array.h:3957
Definition SharedPointerInternals.h:32
void EnableSharedFromThis(SharedPtrType *InSharedPtrOrRef, ObjectType const *InObject)
Definition SharedPointerInternals.h:864
implementation
Definition PlayInEditorLoadingScope.h:8
UE_FORCEINLINE_HINT TSharedRef< ObjectType, Mode > MakeSharedRef(ObjectType *InObject, SharedPointerInternals::TReferenceControllerBase< Mode > *InSharedReferenceCount)
Definition SharedPointer.h:138
Definition IntrusiveUnsetOptionalState.h:71
Definition MemoryLayout.h:108
Definition SharedPointerInternals.h:38
Definition SharedPointerInternals.h:41
Definition SharedPointerInternals.h:37
Definition SharedPointerInternals.h:506
Definition SharedPointerInternals.h:484
Definition UnrealTypeTraits.h:267
Definition UnrealTypeTraits.h:283
Definition UnrealTypeTraits.h:181
@ Value
Definition UnrealTypeTraits.h:182
Definition UnrealTypeTraits.h:172