35#if defined(_MSC_VER) && _MSC_VER == 1900
36 #ifdef PRAGMA_DISABLE_SHADOW_VARIABLE_WARNINGS
60#if UE_WITH_CONSTINIT_UOBJECT
242 UE_DEPRECATED(5.5,
"ThisThreadAtomicallyClearedRFUnreachable() should no longer be used. Reachability flags can only be modified by the garbage collector.")
375 return bGarbageEliminationEnabled;
387 bGarbageEliminationEnabled = bEnabled;
547 template<
typename InterfaceClassType>
550 UClass* InterfaceClass = InterfaceClassType::UClassType::StaticClass();
606 template <
typename ClassType>
609 return ObjClass->IsChildOf(
TestCls);
618 template <
typename OtherClassType>
642 return IsA(T::StaticClass());
730 UE_DEPRECATED(5.0,
"Use GetLinkerUEVersion instead which returns the version as a FPackageFileVersion. See the @FPackageFileVersion documentation for further details")
780#if STATS || ENABLE_STATNAMEDEVENTS_UOBJECT
784#if ENABLE_STATNAMEDEVENTS_UOBJECT
805 if (!StatID.IsValidStat())
815#elif ENABLE_STATNAMEDEVENTS_UOBJECT
830#if STATS || ENABLE_STATNAMEDEVENTS_UOBJECT
883 return Object->GetFName();
917 return Object->GetPathName();
934 return Object->GetFullName();
957#if !defined(USE_LIGHTWEIGHT_UOBJECT_STATS_FOR_HITCH_DETECTION)
958#define USE_LIGHTWEIGHT_UOBJECT_STATS_FOR_HITCH_DETECTION (1)
961#if CPUPROFILERTRACE_ENABLED
980 bool bStarted =
false;
988#if CPUPROFILERTRACE_ENABLED
997 AutoRTFM::PushOnAbortHandler(
this, [
this](){ this->
Stop(); });
1008 bool bStarted =
false;
1009 if (FThreadStats::IsCollectingData(
OtherStat))
1019#if CPUPROFILERTRACE_ENABLED
1028 AutoRTFM::PushOnAbortHandler(
this, [
this](){ this->
Stop(); });
1031#if CPUPROFILERTRACE_ENABLED
1040 AutoRTFM::PopOnAbortHandler(
this);
1049#define SCOPE_CYCLE_UOBJECT(Name, Object) \
1050 FScopeCycleCounterUObject ObjCycleCount_##Name(Object);
1052#elif UE_USE_LIGHTWEIGHT_STATS
1058#if ENABLE_STATNAMEDEVENTS_UOBJECT && CPUPROFILERTRACE_ENABLED
1068#if ENABLE_STATNAMEDEVENTS_UOBJECT && CPUPROFILERTRACE_ENABLED
1077 FCpuProfilerTrace::OutputBeginDynamicEvent(
ObjectStatId.StatString);
1084 AutoRTFM::PushOnAbortHandler(
this, [](){ FCpuProfilerTrace::OutputEndEvent(); });
1096#if ENABLE_STATNAMEDEVENTS_UOBJECT && CPUPROFILERTRACE_ENABLED
1099 AutoRTFM::PopOnAbortHandler(
this);
1103 FCpuProfilerTrace::OutputEndEvent();
1111#define SCOPE_CYCLE_UOBJECT(Name, Object) \
1112 FScopeCycleCounterUObject ObjCycleCount_##Name(Object);
1113#elif USE_LIGHTWEIGHT_STATS_FOR_HITCH_DETECTION && USE_HITCH_DETECTION && USE_LIGHTWEIGHT_UOBJECT_STATS_FOR_HITCH_DETECTION
1140#define SCOPE_CYCLE_UOBJECT(Name, Object) \
1141 FScopeCycleCounterUObject ObjCycleCount_##Name(Object);
1154#define SCOPE_CYCLE_UOBJECT(Name, Object)
1158#if defined(_MSC_VER) && _MSC_VER == 1900
1159 #ifdef PRAGMA_ENABLE_SHADOW_VARIABLE_WARNINGS
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
#define NULL
Definition oodle2base.h:134
#define checkSlow(expr)
Definition AssertionMacros.h:332
#define checkfSlow(expr, format,...)
Definition AssertionMacros.h:333
#define check(expr)
Definition AssertionMacros.h:314
#define checkf(expr, format,...)
Definition AssertionMacros.h:315
int32 GCycleStatsShouldEmitNamedEvents
Definition CoreGlobals.cpp:462
#define UE_INTERNAL
Definition CoreMiscDefines.h:345
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
#define TSAN_ATOMIC(Type)
Definition CoreMiscDefines.h:147
#define GET_STATID(Stat)
Definition Stats.h:656
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define CPUPROFILERTRACE_ENABLED
Definition CpuProfilerTrace.h:19
const bool
Definition NetworkReplayStreaming.h:178
EObjectFullNameFlags
Definition ObjectFwd.h:12
EInternalObjectFlags
Definition ObjectMacros.h:631
@ Async
Object exists only on a different thread than the game thread.
@ Garbage
Garbage from logical point of view and should not be referenced. This flag is mirrored in EObjectFlag...
@ Native
Native (UClass only).
EObjectFlags
Definition ObjectMacros.h:552
@ RF_MarkAsRootSet
Object will be marked as root set on construction and not be garbage collected, even if unreferenced ...
Definition ObjectMacros.h:568
@ RF_NoFlags
No flags, used to avoid a cast.
Definition ObjectMacros.h:555
@ RF_ClassDefaultObject
This object is used as the default template for all instances of a class. One object is created for e...
Definition ObjectMacros.h:563
@ RF_MirroredGarbage
Garbage from logical point of view and should not be referenced. This flag is mirrored in EInternalOb...
Definition ObjectMacros.h:598
@ RF_DefaultSubObject
Flagged on subobject templates that were created in a class constructor, and all instances created fr...
Definition ObjectMacros.h:583
@ RF_MarkAsNative
Object (UField) will be marked as native on construction (DO NOT USE THIS FLAG in HasAnyFlags() etc)
Definition ObjectMacros.h:561
@ RF_ArchetypeObject
This object can be used as a template for instancing objects. This is set on all types of object temp...
Definition ObjectMacros.h:564
@ RF_InheritableComponentTemplate
Flagged on subobject templates stored inside a class instead of the class default object,...
Definition ObjectMacros.h:587
#define RF_AllFlags
All flags, used mainly for error checking.
Definition ObjectMacros.h:612
@ Stop
Definition PrecomputedVolumetricLightmapStreaming.cpp:26
#define UE_TRACE_CHANNELEXPR_IS_ENABLED(ChannelsExpr)
Definition Trace.h:452
FString GetPathNameSafe(const UObjectBaseUtility *Object)
Definition UObjectBaseUtility.h:909
FName GetFNameSafe(const UObjectBaseUtility *Object)
Definition UObjectBaseUtility.h:875
bool IsPossiblyAllocatedUObjectPointer(UObject *Ptr)
Definition UObjectBaseUtility.h:847
FString GetNameSafe(const UObjectBaseUtility *Object)
Definition UObjectBaseUtility.h:892
FString GetFullNameSafe(const UObjectBaseUtility *Object)
Definition UObjectBaseUtility.h:926
COREUOBJECT_API UClass * GetParentNativeClass(UClass *Class)
Definition UObjectBaseUtility.cpp:687
COREUOBJECT_API UClass * GetTopMostNonNativeClass(UClass *Class, bool bAllowReturnNativeClass)
Definition UObjectBaseUtility.cpp:697
FUObjectArray GUObjectArray
Definition UObjectHash.cpp:55
void MarkObject(const class UObjectBase *Object, EObjectMark Marks)
Definition UObjectMarks.cpp:160
bool ObjectHasAllMarks(const class UObjectBase *Object, EObjectMark Marks)
Definition UObjectMarks.cpp:209
void UnMarkObject(const class UObjectBase *Object, EObjectMark Marks)
Definition UObjectMarks.cpp:166
bool ObjectHasAnyMarks(const class UObjectBase *Object, EObjectMark Marks)
Definition UObjectMarks.cpp:204
EObjectMark ObjectGetAllMarks(const class UObjectBase *Object)
Definition UObjectMarks.cpp:214
EObjectMark
Definition UObjectMarks.h:46
float Val(const FString &Value)
Definition UnrealMath.cpp:3163
int32 InternalIndex
Definition VulkanMemory.cpp:4036
if(Failed) console_printf("Failed.\n")
Definition ConfigCacheIni.h:499
Definition LinkerLoad.h:124
Definition NameTypes.h:617
CORE_API FString ToString() const
Definition UnrealNames.cpp:3537
CORE_API void AppendString(FWideString &Out) const
Definition UnrealNames.cpp:3717
Definition UObjectBaseUtility.h:1144
UE_FORCEINLINE_HINT FScopeCycleCounterUObject(const UObjectBaseUtility *Object, TStatId OtherStat)
Definition UObjectBaseUtility.h:1149
UE_FORCEINLINE_HINT FScopeCycleCounterUObject(const UObjectBaseUtility *Object)
Definition UObjectBaseUtility.h:1146
Definition LightweightStats.h:424
FUObjectItem * IndexToObject(int32 Index)
Definition UObjectArray.h:1089
Definition VersePath.h:14
Definition UObjectBaseUtility.h:45
InterfaceClassType * GetImplementingOuter() const
Definition UObjectBaseUtility.h:548
UObjectBaseUtility()
Definition UObjectBaseUtility.h:54
UE_FORCEINLINE_HINT void AddToRoot()
Definition UObjectBaseUtility.h:206
UE_FORCEINLINE_HINT void GetName(FString &ResultString) const
Definition UObjectBaseUtility.h:445
COREUOBJECT_API void * GetInterfaceAddress(UClass *InterfaceClass)
Definition UObjectBaseUtility.cpp:466
virtual bool CanBeClusterRoot() const
Definition UObjectBaseUtility.h:396
friend void InitGarbageElimination()
Definition ObjectBaseUtility.cpp:179
COREUOBJECT_API bool IsTemplate(EObjectFlags TemplateTypes=RF_ArchetypeObject|RF_ClassDefaultObject) const
Definition UObjectBaseUtility.cpp:290
const void * GetNativeInterfaceAddress(UClass *InterfaceClass) const
Definition UObjectBaseUtility.h:673
TStatId GetStatID(bool bForDeferredUse=false) const
Definition UObjectBaseUtility.h:794
bool IsA() const
Definition UObjectBaseUtility.h:640
UE_FORCEINLINE_HINT FString GetName() const
Definition UObjectBaseUtility.h:439
UObjectBaseUtility(EObjectFlags InFlags)
Definition UObjectBaseUtility.h:55
static bool IsGarbageEliminationEnabled()
Definition UObjectBaseUtility.h:373
COREUOBJECT_API bool IsIn(const UObject *SomeOuter) const
Definition UObjectBaseUtility.cpp:344
UE_FORCEINLINE_HINT EObjectMark GetAllMarks() const
Definition UObjectBaseUtility.h:174
COREUOBJECT_API FString GetPathName(const UObject *StopOuter=NULL) const
Definition UObjectBaseUtility.cpp:38
static bool IsPendingKillEnabled()
Definition UObjectBaseUtility.h:379
COREUOBJECT_API bool IsInPackage(const UPackage *SomePackage) const
Definition UObjectBaseUtility.cpp:376
COREUOBJECT_API int32 GetLinkerCustomVersion(FGuid CustomVersionKey) const
Definition ObjectBaseUtility.cpp:56
virtual void OnClusterMarkedAsPendingKill()
Definition UObjectBaseUtility.h:416
COREUOBJECT_API bool IsDefaultSubobject() const
Definition UObjectBaseUtility.cpp:534
UE_FORCEINLINE_HINT bool IsRooted() const
Definition UObjectBaseUtility.h:222
UE_FORCEINLINE_HINT bool IsUnreachable() const
Definition UObjectBaseUtility.h:246
void SetFlags(EObjectFlags NewFlags)
Definition UObjectBaseUtility.h:72
virtual COREUOBJECT_API bool CanBeInCluster() const
Definition UObjectClusters.cpp:922
COREUOBJECT_API void DetachExternalPackage()
Definition UObjectBaseUtility.cpp:157
bool HasAllFlags(EObjectFlags FlagsToCheck) const
Definition UObjectBaseUtility.h:105
COREUOBJECT_API UPackage * GetOutermost() const
Definition UObjectBaseUtility.cpp:224
void MarkAsGarbage()
Definition UObjectBaseUtility.h:182
void ClearInternalFlags(EInternalObjectFlags FlagsToClear) const
Definition UObjectBaseUtility.h:300
UE_FORCEINLINE_HINT void Mark(EObjectMark Marks) const
Definition UObjectBaseUtility.h:131
COREUOBJECT_API FPackageFileVersion GetLinkerUEVersion() const
Definition ObjectBaseUtility.cpp:23
COREUOBJECT_API bool IsInA(const UClass *SomeBaseClass) const
Definition UObjectBaseUtility.cpp:386
int32 GetLinkerUE4Version() const
Definition UObjectBaseUtility.h:731
COREUOBJECT_API bool IsTemplateForSubobjects(EObjectFlags TemplateTypes=RF_ClassDefaultObject|RF_DefaultSubObject|RF_InheritableComponentTemplate) const
Definition UObjectBaseUtility.cpp:528
COREUOBJECT_API UObject * GetOutermostObject() const
Definition UObjectBaseUtility.cpp:176
COREUOBJECT_API FString GetFullName(const UObject *StopOuter=NULL, EObjectFullNameFlags Flags=EObjectFullNameFlags::None) const
Definition UObjectBaseUtility.cpp:94
bool IsA(OtherClassType SomeBase) const
Definition UObjectBaseUtility.h:619
bool AtomicallyClearInternalFlags(EInternalObjectFlags FlagsToClear) const
Definition UObjectBaseUtility.h:313
UE_FORCEINLINE_HINT void RemoveFromRoot()
Definition UObjectBaseUtility.h:212
COREUOBJECT_API int32 GetLinkerIndex() const
Definition UObjectLinker.cpp:187
COREUOBJECT_API bool IsInOuter(const UObject *SomeOuter) const
Definition UObjectBaseUtility.cpp:361
COREUOBJECT_API UPackage * GetPackage() const
Definition UObjectBaseUtility.cpp:199
bool HasAnyFlags(EObjectFlags FlagsToCheck) const
Definition UObjectBaseUtility.h:93
int32 GetLinkerLicenseeUE4Version() const
Definition UObjectBaseUtility.h:751
COREUOBJECT_API bool MarkPackageDirty() const
Definition UObjectBaseUtility.cpp:232
T * GetTypedOuter() const
Definition UObjectBaseUtility.h:537
COREUOBJECT_API bool IsPackageExternal() const
Definition UObjectBaseUtility.cpp:152
UE_FORCEINLINE_HINT bool IsNative() const
Definition UObjectBaseUtility.h:252
COREUOBJECT_API const UClass * FindNearestCommonBaseClass(const UClass *TestClass) const
Definition UObjectBaseUtility.cpp:419
UE_FORCEINLINE_HINT bool HasAnyMarks(EObjectMark Marks) const
Definition UObjectBaseUtility.h:152
UE_FORCEINLINE_HINT bool HasAllMarks(EObjectMark Marks) const
Definition UObjectBaseUtility.h:163
UE_FORCEINLINE_HINT void UnMark(EObjectMark Marks) const
Definition UObjectBaseUtility.h:141
void ClearFlags(EObjectFlags FlagsToClear)
Definition UObjectBaseUtility.h:80
COREUOBJECT_API FString GetFullGroupName(bool bStartWithOuter) const
Definition UObjectBaseUtility.cpp:141
UE_FORCEINLINE_HINT int32 GetRefCount() const
Definition UObjectBaseUtility.h:232
bool ThisThreadAtomicallyClearedRFUnreachable()
Definition GarbageCollection.cpp:6416
COREUOBJECT_API void * GetNativeInterfaceAddress(UClass *InterfaceClass)
Definition UObjectBaseUtility.cpp:503
COREUOBJECT_API bool RootPackageHasAnyFlags(uint32 CheckFlagMask) const
Definition UObjectBaseUtility.cpp:405
COREUOBJECT_API class FLinkerLoad * GetLinker() const
Definition UObjectLinker.cpp:175
void SetInternalFlags(EInternalObjectFlags FlagsToSet) const
Definition UObjectBaseUtility.h:263
COREUOBJECT_API void AddToCluster(UObjectBaseUtility *ClusterRootOrObjectFromCluster, bool bAddAsMutableObject=false)
Definition UObjectClusters.cpp:877
UE_FORCEINLINE_HINT EInternalObjectFlags GetInternalFlags() const
Definition UObjectBaseUtility.h:278
COREUOBJECT_API UObjectBaseUtility * GetImplementingOuterObject(const UClass *InInterfaceClass) const
Definition UObjectBaseUtility.cpp:323
static COREUOBJECT_API void ReloadObjectsFromModifiedConfigSections(const class FConfigModificationTracker *ChangeTracker)
Definition UObjectBaseUtility.cpp:544
void ClearGarbage()
Definition UObjectBaseUtility.h:196
UE_FORCEINLINE_HINT bool HasAnyInternalFlags(EInternalObjectFlags FlagsToCheck) const
Definition UObjectBaseUtility.h:289
UE_INTERNAL virtual COREUOBJECT_API UE::Core::FVersePath GetVersePath() const
Definition UObjectBaseUtility.cpp:213
COREUOBJECT_API int32 GetLinkerLicenseeUEVersion() const
Definition ObjectBaseUtility.cpp:97
static void SetGarbageEliminationEnabled(bool bEnabled)
Definition UObjectBaseUtility.h:385
UE_FORCEINLINE_HINT EObjectFlags GetMaskedFlags(EObjectFlags Mask=RF_AllFlags) const
Definition UObjectBaseUtility.h:117
UE_FORCEINLINE_HINT bool operator<(const UObjectBaseUtility &Other) const
Definition UObjectBaseUtility.h:770
UE_FORCEINLINE_HINT void AppendName(FString &ResultString) const
Definition UObjectBaseUtility.h:450
COREUOBJECT_API void ReattachExternalPackage()
Definition UObjectBaseUtility.cpp:162
virtual COREUOBJECT_API void CreateCluster()
Definition UObjectClusters.cpp:927
Definition UObjectBase.h:59
FORCEINLINE FName GetFName() const
Definition UObjectBase.h:233
FORCEINLINE EObjectFlags GetFlags() const
Definition UObjectBase.h:285
FORCENOINLINE void AtomicallySetFlags(EObjectFlags FlagsToAdd)
Definition UObjectBase.h:295
FORCENOINLINE void AtomicallyClearFlags(EObjectFlags FlagsToClear)
Definition UObjectBase.h:328
FORCEINLINE UClass * GetClass() const
Definition UObjectBase.h:217
@ Start
Definition GeoEnum.h:100
@ false
Definition radaudio_common.h:23
Definition ObjectVersion.h:762
int32 FileVersionUE4
Definition ObjectVersion.h:870
Definition UObjectArray.h:50
UE_FORCEINLINE_HINT void SetGarbage()
Definition UObjectArray.h:324
UE_FORCEINLINE_HINT void SetRootSet()
Definition UObjectArray.h:337
UE_FORCEINLINE_HINT void ClearFlags(EInternalObjectFlags FlagsToClear)
Definition UObjectArray.h:232
UE_FORCEINLINE_HINT bool HasAnyFlags(EInternalObjectFlags InFlags) const
Definition UObjectArray.h:309
UE_FORCEINLINE_HINT int32 GetRefCount() const
Definition UObjectArray.h:350
bool ThisThreadAtomicallyClearedFlag(EInternalObjectFlags FlagToClear)
Definition UObjectArray.h:242
UE_FORCEINLINE_HINT void SetFlags(EInternalObjectFlags FlagsToSet)
Definition UObjectArray.h:218
EInternalObjectFlags GetFlags() const
Definition UObjectArray.h:223
UE_FORCEINLINE_HINT bool IsUnreachable() const
Definition UObjectArray.h:319
UE_FORCEINLINE_HINT void ClearGarbage()
Definition UObjectArray.h:328
UE_FORCEINLINE_HINT void ClearRootSet()
Definition UObjectArray.h:341
UE_FORCEINLINE_HINT bool IsRootSet() const
Definition UObjectArray.h:345
Definition LightweightStats.h:416