UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
UObjectBaseUtility.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3/*=============================================================================
4 UObjectBaseUtility.h: Unreal UObject functions that only depend on UObjectBase
5=============================================================================*/
6
7#pragma once
8
12#include "HAL/PlatformMath.h"
14#include "Misc/EnumClassFlags.h"
16#include "Stats/Stats.h"
17#include "Stats/StatsCommon.h"
20#include "Trace/Trace.h"
22#include "UObject/NameTypes.h"
25#include "UObject/UObjectBase.h"
27#include "UObject/ObjectFwd.h"
28#include "AutoRTFM.h"
29
30class UClass;
31class UObject;
32class UPackage;
33struct FGuid;
34
35#if defined(_MSC_VER) && _MSC_VER == 1900
36 #ifdef PRAGMA_DISABLE_SHADOW_VARIABLE_WARNINGS
38 #endif
39#endif
40
45{
47 static COREUOBJECT_API bool bGarbageEliminationEnabled;
48
49 friend void InitGarbageElimination();
51
52public:
53 // Constructors.
59
60#if UE_WITH_CONSTINIT_UOBJECT
61 explicit consteval UObjectBaseUtility(UE::CodeGen::ConstInit::FObjectParams InParams)
63 {
64 }
65#endif
66
67 /*-------------------
68 Flags
69 -------------------*/
70
73 {
74 checkSlow(!(NewFlags & (RF_MarkAsNative | RF_MarkAsRootSet | RF_MirroredGarbage))); // These flags can't be used outside of constructors / internal code
75 checkf(!(NewFlags & RF_MirroredGarbage) || (GetFlags() & (NewFlags & RF_MirroredGarbage)) == (NewFlags & RF_MirroredGarbage), TEXT("RF_MirroredGarbage can not be set through SetFlags function. Use MarkAsGarbage() instead"));
77 }
78
81 {
82 checkSlow(!(FlagsToClear & (RF_MarkAsNative | RF_MarkAsRootSet | RF_MirroredGarbage)) || FlagsToClear == RF_AllFlags); // These flags can't be used outside of constructors / internal code
83 checkf(!(FlagsToClear & RF_MirroredGarbage) || (GetFlags() & (FlagsToClear & RF_MirroredGarbage)) == RF_NoFlags, TEXT("RF_MirroredGarbage can not be cleared through ClearFlags function. Use ClearGarbage() instead"));
85 }
86
94 {
95 checkSlow(!(FlagsToCheck & (RF_MarkAsNative | RF_MarkAsRootSet)) || FlagsToCheck == RF_AllFlags); // These flags can't be used outside of constructors / internal code
96 return (GetFlags() & FlagsToCheck) != 0;
97 }
98
106 {
107 checkSlow(!(FlagsToCheck & (RF_MarkAsNative | RF_MarkAsRootSet)) || FlagsToCheck == RF_AllFlags); // These flags can't be used outside of constructors / internal code
108 return ((GetFlags() & FlagsToCheck) == FlagsToCheck);
109 }
110
121
122 /*----------------------------------------------------
123 Marks, implemented in UObjectMarks.cpp
124 ----------------------------------------------------*/
125
132 {
133 MarkObject(this,Marks);
134 }
135
142 {
143 UnMarkObject(this,Marks);
144 }
145
153 {
154 return ObjectHasAnyMarks(this,Marks);
155 }
156
164 {
165 return ObjectHasAllMarks(this,Marks);
166 }
167
175 {
176 return ObjectGetAllMarks(this);
177 }
178
182 inline void MarkAsGarbage()
183 {
184 check(!IsRooted());
185
188
189 // If we explicitly marked the object as garbage, remove the async flag so it's visible to the GC
191 }
192
201
210
216
226
236
242 UE_DEPRECATED(5.5, "ThisThreadAtomicallyClearedRFUnreachable() should no longer be used. Reachability flags can only be modified by the garbage collector.")
244
250
256
264 {
267 checkf(!(FlagsToSet & EInternalObjectFlags::Garbage) || (FlagsToSet & EInternalObjectFlags::Garbage) == (ObjectItem->GetFlags() & EInternalObjectFlags::Garbage), TEXT("SetInternalFlags should not set the Garbage flag. Use MarkAsGarbage instead"));
269 ObjectItem->SetFlags(FlagsToSet);
270 }
271
282
293
301 {
303 checkf(!(FlagsToClear & EInternalObjectFlags::Garbage) || (ObjectItem->GetFlags() & (FlagsToClear & EInternalObjectFlags::Garbage)) == EInternalObjectFlags::None, TEXT("ClearInternalFlags should not clear Garbage flag. Use ClearGarbage() instead"));
304 ObjectItem->ClearFlags(FlagsToClear);
305 }
306
314 {
316 checkf((ObjectItem->GetFlags() & (FlagsToClear & EInternalObjectFlags::Garbage)) == EInternalObjectFlags::None, TEXT("ClearInternalFlags should not clear Garbage flag. Use ClearGarbage() instead"));
318 }
319
320
321 /*-------------------
322 Names
323 -------------------*/
324
336
341
354
364 COREUOBJECT_API FString GetPathName( const UObject* StopOuter=NULL ) const;
365
369 COREUOBJECT_API void GetPathName(const UObject* StopOuter, FString& ResultString) const;
370 COREUOBJECT_API void GetPathName(const UObject* StopOuter, FStringBuilderBase& ResultString) const;
371
373 static inline bool IsGarbageEliminationEnabled()
374 {
375 return bGarbageEliminationEnabled;
376 }
377
378 UE_DEPRECATED(5.4, "Use IsGarbageEliminationEnabled()")
383
385 static inline void SetGarbageEliminationEnabled(bool bEnabled)
386 {
387 bGarbageEliminationEnabled = bEnabled;
388 }
389
390public:
396 virtual bool CanBeClusterRoot() const
397 {
398 return false;
399 }
400
406 COREUOBJECT_API virtual bool CanBeInCluster() const;
407
411 COREUOBJECT_API virtual void CreateCluster();
412
417
424
425public:
433
440 {
441 return GetFName().ToString();
442 }
443
445 UE_FORCEINLINE_HINT void GetName(FString &ResultString) const
446 {
447 GetFName().ToString(ResultString);
448 }
450 UE_FORCEINLINE_HINT void AppendName(FString& ResultString) const
451 {
452 GetFName().AppendString(ResultString);
453 }
454
455
456 /*-------------------
457 Outer & Package
458 -------------------*/
459
465
471
477
484
491
498
506
514
522
530
536 template<typename T>
537 T* GetTypedOuter() const
538 {
539 return (T *)GetTypedOuter(T::StaticClass());
540 }
541
547 template<typename InterfaceClassType>
549 {
550 UClass* InterfaceClass = InterfaceClassType::UClassType::StaticClass();
552 {
553 return static_cast<InterfaceClassType*>(ImplementingOuter->GetInterfaceAddress(InterfaceClass));
554 }
555 return nullptr;
556 }
557
565
570 COREUOBJECT_API bool IsIn( const UObject* SomeOuter ) const;
571
576 COREUOBJECT_API bool IsIn(const UPackage* SomePackage) const;
577
579 COREUOBJECT_API bool IsInOuter(const UObject* SomeOuter) const;
580
583
589 COREUOBJECT_API bool IsInA( const UClass* SomeBaseClass ) const;
590
599
600
601 /*-------------------
602 Class
603 -------------------*/
604
605private:
606 template <typename ClassType>
607 static UE_FORCEINLINE_HINT bool IsChildOfWorkaround(const ClassType* ObjClass, const ClassType* TestCls)
608 {
609 return ObjClass->IsChildOf(TestCls);
610 }
611
612public:
618 template <typename OtherClassType>
619 inline bool IsA( OtherClassType SomeBase ) const
620 {
621 // We have a cyclic dependency between UObjectBaseUtility and UClass,
622 // so we use a template to allow inlining of something we haven't yet seen, because it delays compilation until the function is called.
623
624 // 'static_assert' that this thing is actually a UClass pointer or convertible to it.
627 checkfSlow(SomeBaseClass, TEXT("IsA(NULL) cannot yield meaningful results"));
628
629 const UClass* ThisClass = GetClass();
630
631 // Stop the compiler doing some unnecessary branching for nullptr checks
633 UE_ASSUME(ThisClass);
634
635 return IsChildOfWorkaround(ThisClass, SomeBaseClass);
636 }
637
639 template<class T>
640 bool IsA() const
641 {
642 return IsA(T::StaticClass());
643 }
644
650 COREUOBJECT_API const UClass* FindNearestCommonBaseClass( const UClass* TestClass ) const;
651
661 COREUOBJECT_API void* GetInterfaceAddress( UClass* InterfaceClass );
662
667 COREUOBJECT_API void* GetNativeInterfaceAddress(UClass* InterfaceClass);
668
673 const void* GetNativeInterfaceAddress(UClass* InterfaceClass) const
674 {
675 return const_cast<UObjectBaseUtility*>(this)->GetNativeInterfaceAddress(InterfaceClass);
676 }
677
686
698
699
700 /*--------------------------------------------------
701 Linker, defined in UObjectLinker.cpp
702 --------------------------------------------------*/
703
710
718
729
730 UE_DEPRECATED(5.0, "Use GetLinkerUEVersion instead which returns the version as a FPackageFileVersion. See the @FPackageFileVersion documentation for further details")
732 {
733 // Existing code calling GetLinkerUE4Version will be testing against UE4 version numbers so
734 // we can just return the UE4 version number.
735 // All new code that might actually need the UE5 version as well should be calling ::GetLinkerUEVersion
737 }
738
749
750 UE_DEPRECATED(5.0, "Use GetLinkerLicenseeUEVersion instead")
752
753
764
771 {
772 return GetName() < Other.GetName();
773 }
774
775
776
777 /*******
778 * Stats
779 *******/
780#if STATS || ENABLE_STATNAMEDEVENTS_UOBJECT
781 inline void ResetStatID()
782 {
784#if ENABLE_STATNAMEDEVENTS_UOBJECT
785 GUObjectArray.IndexToObject(InternalIndex)->StatIDStringStorage = nullptr;
786#endif
787 }
788#endif
794 inline TStatId GetStatID(bool bForDeferredUse = false) const
795 {
796 TStatId Result{};
798 {
799#if STATS
800 const TStatId& StatID = GUObjectArray.IndexToObject(InternalIndex)->StatID;
801
802 // this is done to avoid even registering stats for a disabled group (unless we plan on using it later)
803 if (bForDeferredUse || FThreadStats::IsCollectingData(GET_STATID(STAT_UObjectsStatGroupTester)))
804 {
805 if (!StatID.IsValidStat())
806 {
807 CreateStatID();
808 }
809 Result = StatID;
810 }
811 else
812 {
813 Result = TStatId(); // not doing stats at the moment, or ever
814 }
815#elif ENABLE_STATNAMEDEVENTS_UOBJECT
816 const TStatId& StatID = GUObjectArray.IndexToObject(InternalIndex)->StatID;
817 if (!StatID.IsValidStat() && (bForDeferredUse || GCycleStatsShouldEmitNamedEvents))
818 {
819 CreateStatID();
820 }
821 Result = StatID;
822#else
823 Result = TStatId(); // not doing stats at the moment, or ever
824#endif // STATS
825 };
826 return Result;
827 }
828
829private:
830#if STATS || ENABLE_STATNAMEDEVENTS_UOBJECT
832 void CreateStatID() const
833 {
835 }
836#endif
837
838
839 /*******
840 * Config
841 *******/
842public:
844};
845
848{
850 {
851 int32 Result = 0;
852
853 // != changed to < because of false positive in MSVC's static analyzer: warning C6295: Ill-defined for-loop. Loop executes infinitely.
854 for (int32 I = 0; I < sizeof(UPTRINT); ++I)
855 {
856 if ((Val & 0xFF) == ByteVal)
857 {
858 ++Result;
859 }
860 Val >>= 8;
861 }
862
863 return Result;
864 };
865
866 UPTRINT PtrVal = (UPTRINT)Ptr;
867 return PtrVal >= 0x1000 && CountByteValues(PtrVal, 0xCD) < sizeof(UPTRINT) / 2;
868}
869
876{
877 if (Object == nullptr)
878 {
879 return NAME_None;
880 }
881 else
882 {
883 return Object->GetFName();
884 }
885}
886
893{
894 if (Object == nullptr)
895 {
896 return TEXT("None");
897 }
898 else
899 {
900 return Object->GetName();
901 }
902}
903
910{
911 if (Object == nullptr)
912 {
913 return TEXT("None");
914 }
915 else
916 {
917 return Object->GetPathName();
918 }
919}
920
927{
928 if (!Object || !Object->GetClass())
929 {
930 return TEXT("None");
931 }
932 else
933 {
934 return Object->GetFullName();
935 }
936}
937
943
956
957#if !defined(USE_LIGHTWEIGHT_UOBJECT_STATS_FOR_HITCH_DETECTION)
958#define USE_LIGHTWEIGHT_UOBJECT_STATS_FOR_HITCH_DETECTION (1)
959#endif
960
961#if CPUPROFILERTRACE_ENABLED
963#endif
964
965#if STATS
966
969{
970public:
975 {
977 {
978 if (Object)
979 {
980 bool bStarted = false;
981 TStatId ObjectStatId = Object->GetStatID();
982 if (FThreadStats::IsCollectingData(ObjectStatId))
983 {
984 Start(ObjectStatId);
985 bStarted = true;
986 }
987
988#if CPUPROFILERTRACE_ENABLED
990 {
992 }
993#endif
994 }
995 };
996
997 AutoRTFM::PushOnAbortHandler(this, [this](){ this->Stop(); });
998 }
1003 {
1005 {
1006 if (Object)
1007 {
1008 bool bStarted = false;
1009 if (FThreadStats::IsCollectingData(OtherStat))
1010 {
1011 TStatId ObjectStatId = Object->GetStatID();
1012 if (!ObjectStatId.IsNone())
1013 {
1015 bStarted = true;
1016 }
1017 }
1018
1019#if CPUPROFILERTRACE_ENABLED
1021 {
1023 }
1024#endif
1025 }
1026 };
1027
1028 AutoRTFM::PushOnAbortHandler(this, [this](){ this->Stop(); });
1029 }
1030
1031#if CPUPROFILERTRACE_ENABLED
1033#endif
1034
1039 {
1040 AutoRTFM::PopOnAbortHandler(this);
1042 {
1043 Stop();
1044 };
1045 }
1046};
1047
1049#define SCOPE_CYCLE_UOBJECT(Name, Object) \
1050 FScopeCycleCounterUObject ObjCycleCount_##Name(Object);
1051
1052#elif UE_USE_LIGHTWEIGHT_STATS
1053
1055{
1056public:
1058#if ENABLE_STATNAMEDEVENTS_UOBJECT && CPUPROFILERTRACE_ENABLED
1059 bool bPop;
1060#endif
1061
1063 : ScopeCycleCounter(Object ? Object->GetStatID().StatString : nullptr)
1065 , bPop(false)
1066#endif
1067 {
1068#if ENABLE_STATNAMEDEVENTS_UOBJECT && CPUPROFILERTRACE_ENABLED
1070 {
1072 {
1073 const TStatId ObjectStatId = Object->GetStatID();
1074 if (ObjectStatId.IsValidStat())
1075 {
1076 bPop = true;
1077 FCpuProfilerTrace::OutputBeginDynamicEvent(ObjectStatId.StatString);
1078 }
1079 }
1080 };
1081
1082 if(bPop)
1083 {
1084 AutoRTFM::PushOnAbortHandler(this, [](){ FCpuProfilerTrace::OutputEndEvent(); });
1085 }
1086#endif
1087 }
1088
1091 {
1092 }
1093
1095 {
1096#if ENABLE_STATNAMEDEVENTS_UOBJECT && CPUPROFILERTRACE_ENABLED
1097 if (bPop)
1098 {
1099 AutoRTFM::PopOnAbortHandler(this);
1100
1102 {
1103 FCpuProfilerTrace::OutputEndEvent();
1104 };
1105 }
1106#endif
1107 }
1108};
1109
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
1115
1117{
1118 const UObject* StatObject;
1119public:
1121 {
1123 }
1124
1126 {
1128 {
1130 {
1131 ReportHitch();
1132 };
1133 }
1134 }
1135
1137};
1138
1140#define SCOPE_CYCLE_UOBJECT(Name, Object) \
1141 FScopeCycleCounterUObject ObjCycleCount_##Name(Object);
1142#else
1153
1154#define SCOPE_CYCLE_UOBJECT(Name, Object)
1155
1156#endif
1157
1158#if defined(_MSC_VER) && _MSC_VER == 1900
1159 #ifdef PRAGMA_ENABLE_SHADOW_VARIABLE_WARNINGS
1161 #endif
1162#endif
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 TEXT(x)
Definition Platform.h:1272
#define UE_ASSUME(x)
Definition Platform.h:833
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
FPlatformTypes::UPTRINT UPTRINT
An unsigned integer the same size as a pointer.
Definition Platform.h:1146
#define UE_FORCEINLINE_HINT
Definition Platform.h:723
#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
#define PRAGMA_ENABLE_DEPRECATION_WARNINGS
Definition GenericPlatformCompilerPreSetup.h:12
#define PRAGMA_DISABLE_DEPRECATION_WARNINGS
Definition GenericPlatformCompilerPreSetup.h:8
#define PRAGMA_ENABLE_SHADOW_VARIABLE_WARNINGS
Definition MSVCPlatformCompilerPreSetup.h:65
#define PRAGMA_DISABLE_SHADOW_VARIABLE_WARNINGS
Definition MSVCPlatformCompilerPreSetup.h:55
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")
uint32_t uint32
Definition binka_ue_file_header.h:6
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 Class.h:3793
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
Definition Object.h:95
Definition Package.h:216
@ Start
Definition GeoEnum.h:100
@ false
Definition radaudio_common.h:23
Definition Guid.h:109
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