9#include "Containers/Map.h"
32 struct FObjectHandleUtils;
37#if UE_WITH_CONSTINIT_UOBJECT
49#if !defined(UE_STORE_OBJECT_LIST_INTERNAL_INDEX)
50# define UE_STORE_OBJECT_LIST_INTERNAL_INDEX 0
72 const TCHAR* PackageName,
96#if UE_WITH_CONSTINIT_UOBJECT
149#if !UE_WITH_CONSTINIT_UOBJECT
155 UE_DEPRECATED(5.6,
"Use the new method above and specify UClass::StaticClass as the first argument")
187#if UE_WITH_REMOTE_OBJECT_HANDLE
225#if UE_WITH_REMOTE_OBJECT_HANDLE
235#if UE_WITH_CONSTINIT_UOBJECT
272 UE_DEPRECATED(5.3,
"This function is not thread-safe. Use AtomicallySetFlags or AtomicallyClearFlags instead.")
297 int32 OldFlags = GetFlagsInternal();
312 AutoRTFM::OnAbort([
this, OldFlags,
FlagsToAdd]
321 FPlatformAtomics::InterlockedAnd((
int32*)&ObjectFlags,
MaskFlags);
330 int32 OldFlags = GetFlagsInternal();
362 static_assert(
sizeof(
int32) ==
sizeof(ObjectFlags),
"Flags must be 32-bit for atomics.");
368 Result = FPlatformAtomics::AtomicRead_Relaxed((
int32*)&ObjectFlags);
386 struct FNameAndObjectHashIndex
389#if UE_STORE_OBJECT_LIST_INTERNAL_INDEX
396 constexpr FNameAndObjectHashIndex()
403 FNameAndObjectHashIndex(
ENoInit)
406 FNameAndObjectHashIndex(
FName InName)
417#if UE_WITH_CONSTINIT_UOBJECT
421#if UE_WITH_CONSTINIT_UOBJECT
423 "Wasted space in UObject? If FName is small in this configuration, enable UE_STORE_OBJECT_LIST_INTERNAL_INDEX to speed up the UObject Hash.");
426#if UE_WITH_CONSTINIT_UOBJECT
435 checkfSlow(
false,
TEXT(
"Compiled-in object unexpectedly already had its name initialized? %s"), *
NamePrivate.Name.ToString());
451#if UE_WITH_CONSTINIT_UOBJECT
455#if UE_STORE_OBJECT_LIST_INTERNAL_INDEX
479#if !UE_WITH_CONSTINIT_UOBJECT
483template <
typename T,
typename V>
515 class UClass* (*OuterRegister)();
516 class UClass* (*InnerRegister)();
549 void* (*CreateCppStructOps)();
585 class UEnum* (*OuterRegister)();
636#if !UE_WITH_CONSTINIT_UOBJECT
#define NULL
Definition oodle2base.h:134
#define checkfSlow(expr, format,...)
Definition AssertionMacros.h:333
ENoInit
Definition CoreMiscDefines.h:158
@ NoInit
Definition CoreMiscDefines.h:158
@ INDEX_NONE
Definition CoreMiscDefines.h:150
#define UE_WITH_REMOTE_OBJECT_HANDLE
Definition CoreMiscDefines.h:620
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
@ ConstEval
Definition CoreMiscDefines.h:161
#define DECLARE_DWORD_COUNTER_STAT_EXTERN(CounterName, StatId, GroupId, API)
Definition Stats.h:682
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
constexpr bool EnumHasAllFlags(Enum Flags, Enum Contains)
Definition EnumClassFlags.h:28
EInternalObjectFlags
Definition ObjectMacros.h:631
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_NeedInitialization
This object has not completed its initialization process. Cleared when ~FObjectInitializer completes.
Definition ObjectMacros.h:572
@ RF_MarkAsNative
Object (UField) will be marked as native on construction (DO NOT USE THIS FLAG in HasAnyFlags() etc)
Definition ObjectMacros.h:561
#define RF_AllFlags
All flags, used mainly for error checking.
Definition ObjectMacros.h:612
COREUOBJECT_API void UObjectForceRegistration(UObjectBase *Object, bool bCheckForModuleRelease=true)
Definition UObjectBase.cpp:636
COREUOBJECT_API void RegisterCompiledInInfo(class UClass *(*InOuterRegister)(), class UClass *(*InInnerRegister)(), const TCHAR *InPackageName, const TCHAR *InName, FClassRegistrationInfo &InInfo, const FClassReloadVersionInfo &InVersionInfo)
Definition UObjectBase.cpp:718
COREUOBJECT_API void ProcessNewlyLoadedUObjects(FName InModuleName=NAME_None, bool bCanProcessNewlyLoadedObjects=true)
Definition UObjectBase.cpp:1027
COREUOBJECT_API void RegisterModularObjectsProcessing()
Definition UObjectBase.cpp:1011
COREUOBJECT_API class UEnum * GetStaticEnum(class UEnum *(*InRegister)(), UObject *EnumOuter, const TCHAR *EnumName)
Definition UObjectBase.cpp:691
void UObjectBaseShutdown()
Definition UObjectBase.cpp:1344
COREUOBJECT_API bool UObjectInitialized()
Definition UObjectBase.cpp:59
void UObjectBaseInit()
Definition UObjectBase.cpp:1271
COREUOBJECT_API class UScriptStruct * GetStaticStruct(class UScriptStruct *(*InRegister)(), UObject *StructOuter, const TCHAR *StructName)
Definition UObjectBase.cpp:675
#define UE_STORE_OBJECT_LIST_INTERNAL_INDEX
Definition UObjectBase.h:50
int32 InternalIndex
Definition VulkanMemory.cpp:4036
uint32 Size
Definition VulkanMemory.cpp:4034
if(Failed) console_printf("Failed.\n")
Definition UObjectGlobals.cpp:3494
Definition NameTypes.h:617
Definition UObjectAllocator.h:16
Definition UObjectArray.h:940
Definition UObjectHash.cpp:669
Definition ObjectPtr.h:881
TObjectPtr< T > & GetAccessTrackedObjectPtr()
Definition ObjectPtr.h:922
Definition UObjectBaseUtility.h:45
Definition UObjectBase.h:59
friend class FCompiledInObjectRegistry
Definition UObjectBase.h:447
COREUOBJECT_API UPackage * GetExternalPackage() const
Definition UObjectBase.cpp:312
FORCEINLINE void SetFlagsTo(EObjectFlags NewFlags)
Definition UObjectBase.h:273
friend void RemoveFromClassMap(class FUObjectHashTables &ThreadHash, UObjectBase *Object)
Definition UObjectHash.cpp:1413
COREUOBJECT_API void AddRef() const
Definition GarbageCollection.cpp:6488
friend class FDeferredRegistry
Definition UObjectBase.h:446
COREUOBJECT_API void SetExternalPackage(UPackage *InPackage)
Definition UObjectBase.cpp:337
friend COREUOBJECT_API void InitializePrivateStaticClass(class UClass *(*TClass_StaticClassFn)(), class UClass *TClass_Super_StaticClass, class UClass *TClass_PrivateStaticClass, class UClass *TClass_WithinClass_StaticClass, const TCHAR *PackageName, const TCHAR *Name)
Definition Class.cpp:127
FORCEINLINE UObject * GetOuter() const
Definition UObjectBase.h:223
virtual COREUOBJECT_API void DeferredRegister(UClass *UClassStaticClass, const TCHAR *PackageName, const TCHAR *Name)
Definition UObjectBase.cpp:198
friend COREUOBJECT_API void UObjectForceRegistration(UObjectBase *Object, bool bCheckForModuleRelease)
Definition UObjectBase.cpp:636
FORCEINLINE FName GetFName() const
Definition UObjectBase.h:233
static void PrefetchOuter(UObject *Object)
Definition UObjectBase.h:357
static void PrefetchClass(UObject *Object)
Definition UObjectBase.h:356
COREUOBJECT_API UPackage * GetExternalPackageInternal() const
Definition UObjectBase.cpp:327
friend class FBlueprintCompileReinstancer
Definition UObjectBase.h:443
FORCEINLINE uint32 GetUniqueID() const
Definition UObjectBase.h:211
virtual COREUOBJECT_API ~UObjectBase()
Definition UObjectBase.cpp:174
friend void AddToClassMap(class FUObjectHashTables &ThreadHash, UObjectBase *Object)
Definition UObjectHash.cpp:1335
COREUOBJECT_API void ReleaseRef() const
Definition GarbageCollection.cpp:6494
COREUOBJECT_API void MarkAsReachable() const
Definition GarbageCollection.cpp:6481
friend class FVerseObjectClassReplacer
Definition UObjectBase.h:444
FORCEINLINE EObjectFlags GetFlags() const
Definition UObjectBase.h:285
virtual void RegisterDependencies()
Definition UObjectBase.h:151
FNameAndObjectHashIndex NamePrivate
Definition UObjectBase.h:416
UObjectBase()
Definition UObjectBase.h:89
COREUOBJECT_API bool IsValidLowLevelFast(bool bRecursive=true) const
Definition UObjectBase.cpp:399
friend class FContextObjectManager
Definition UObjectBase.h:445
friend struct Z_Construct_UClass_UObject_Statics
Definition UObjectBase.h:61
virtual COREUOBJECT_API FName GetFNameForStatID() const
Definition UObjectBase.cpp:699
friend COREUOBJECT_API UObject * StaticAllocateObject(const UClass *, UObject *, FName, EObjectFlags, EInternalObjectFlags, bool, bool *, UPackage *, int32, FRemoteObjectId, class FGCReconstructionGuard *)
Definition UObjectGlobals.cpp:3576
COREUOBJECT_API void LowLevelRename(FName NewName, UObject *NewOuter=NULL)
Definition UObjectBase.cpp:274
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
COREUOBJECT_API bool IsValidLowLevel() const
Definition UObjectBase.cpp:394
static COREUOBJECT_API FString RemoveClassPrefix(const TCHAR *ClassName)
Definition UObjectBase.cpp:705
const TCHAR * Name
Definition OodleDataCompression.cpp:30
Definition CoreGlobals.cpp:268
Definition CoreGlobals.cpp:268
UE_STRING_CLASS Result(Forward< LhsType >(Lhs), RhsLen)
Definition String.cpp.inl:732
Definition UObjectBase.h:514
FClassReloadVersionInfo VersionInfo
Definition UObjectBase.h:519
const TCHAR * Name
Definition UObjectBase.h:517
FClassRegistrationInfo * Info
Definition UObjectBase.h:518
Definition UObjectBase.h:498
Definition UObjectBase.h:584
FEnumRegistrationInfo * Info
Definition UObjectBase.h:587
FEnumReloadVersionInfo VersionInfo
Definition UObjectBase.h:588
const TCHAR * Name
Definition UObjectBase.h:586
Definition UObjectBase.h:569
Definition UObjectBase.h:605
Definition UObjectBase.h:641
FRegisterCompiledInInfo(ArgTypes &&... Args)
Definition UObjectBase.h:643
Definition RemoteObjectTypes.h:212
Definition UObjectBase.h:547
const TCHAR * Name
Definition UObjectBase.h:550
FStructRegistrationInfo * Info
Definition UObjectBase.h:551
FStructReloadVersionInfo VersionInfo
Definition UObjectBase.h:552
Definition UObjectBase.h:531
static FORCEINLINE T * NoAccessTrackingGetNoResolve(const TObjectPtr< T > &Ptr)
Definition ObjectPtr.h:873
Definition UObjectBase.h:485
TType * OuterSingleton
Definition UObjectBase.h:490
TType * InnerSingleton
Definition UObjectBase.h:489
V TVersion
Definition UObjectBase.h:487
T TType
Definition UObjectBase.h:486
TVersion ReloadVersionInfo
Definition UObjectBase.h:491
Definition ObjectHandlePrivate.h:10