UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
UObjectHash.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3/*=============================================================================
4 UObjectHash.h: Unreal object name hashes
5=============================================================================*/
6
7#pragma once
8
9#include "Concepts/SameAs.h"
10#include "Containers/Array.h"
12#include "Containers/Map.h"
13#include "Containers/Set.h"
15#include "CoreTypes.h"
16#include "Stats/Stats.h"
17#include "Templates/Function.h"
19#include "UObject/NameTypes.h"
22#include "UObject/UnrealNames.h"
23
24class FOutputDevice;
25class UClass;
26class UObject;
27class UPackage;
28
30
31#if !UE_BUILD_TEST && !UE_BUILD_SHIPPING
33#endif // !UE_BUILD_TEST && !UE_BUILD_SHIPPING
34
47template <UE::CSameAs<bool> ExactClassType>
48UE_EXACTCLASS_BOOL_DEPRECATED("StaticFindObjectFastInternal")
53
66template <UE::CSameAs<bool> ExactClassType>
67UE_EXACTCLASS_BOOL_DEPRECATED("StaticFindAllObjectsFastInternal")
72
84template <UE::CSameAs<bool> ExactClassType>
85UE_EXACTCLASS_BOOL_DEPRECATED("StaticFindFirstObjectFastInternal")
90
101UObject* StaticFindObjectFastExplicit(const UClass* ObjectClass, FName ObjectName, const FString& ObjectPathName, EFindObjectFlags Flags = EFindObjectFlags::None, EObjectFlags ExcludeFlags = RF_NoFlags);
102template <UE::CSameAs<bool> ExactClassType>
103UE_EXACTCLASS_BOOL_DEPRECATED("StaticFindObjectFastExplicit")
105{
106 return StaticFindObjectFastExplicit(ObjectClass, ObjectName, ObjectPathName, bExactClass ? EFindObjectFlags::ExactClass : EFindObjectFlags::None, ExcludeFlags);
107}
108
118
129
141
156
165
176
188
199
210
221
229COREUOBJECT_API void GetDerivedClasses(const UClass* ClassToLookFor, TArray<UClass *>& Results, bool bRecursive = true);
230
233
241
247void HashObject(class UObjectBase* Object);
253void UnhashObject(class UObjectBase* Object);
254
255
262
268
275
283
288
295
302
310
318
320{
321 None,
322 ShowIndividualStats = 1 << 0,
323 IncludeReflectionData = 1 << 1
324};
326
327
334
341UE_DEPRECATED(5.5, "LogHashMemoryOverheadStatistics that takes bool parameter has been deprecated.")
346
355
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
#define TEXT(x)
Definition Platform.h:1272
#define UE_NODEBUG
Definition Platform.h:817
#define UE_FORCEINLINE_HINT
Definition Platform.h:723
FPlatformTypes::uint64 uint64
A 64-bit unsigned integer.
Definition Platform.h:1117
#define DECLARE_DWORD_COUNTER_STAT_EXTERN(CounterName, StatId, GroupId, API)
Definition Stats.h:682
#define DECLARE_STATS_GROUP_VERBOSE(GroupDesc, GroupId, GroupCat)
Definition Stats.h:690
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define ENUM_CLASS_FLAGS(Enum)
Definition EnumClassFlags.h:6
EFindObjectFlags
Definition FindObjectFlags.h:8
#define UE_EXACTCLASS_BOOL_DEPRECATED(FunctionName)
Definition FindObjectFlags.h:16
EInternalObjectFlags
Definition ObjectMacros.h:631
EObjectFlags
Definition ObjectMacros.h:552
@ 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
COREUOBJECT_API void ForEachObjectWithPackage(const class UPackage *Outer, TFunctionRef< bool(UObject *)> Operation, bool bIncludeNestedObjects=true, EObjectFlags ExclusionFlags=RF_NoFlags, EInternalObjectFlags ExclusionInternalFlags=EInternalObjectFlags::None)
Definition UObjectHash.cpp:1719
void HashObjectExternalPackage(class UObjectBase *Object, class UPackage *Package)
Definition UObjectHash.cpp:2055
void UnhashObjectExternalPackage(class UObjectBase *Object)
Definition UObjectHash.cpp:2084
COREUOBJECT_API void GetDerivedClasses(const UClass *ClassToLookFor, TArray< UClass * > &Results, bool bRecursive=true)
Definition UObjectHash.cpp:1883
UObject * StaticFindObjectFastExplicit(const UClass *ObjectClass, FName ObjectName, const FString &ObjectPathName, EFindObjectFlags Flags=EFindObjectFlags::None, EObjectFlags ExcludeFlags=RF_NoFlags)
Definition UObjectHash.cpp:925
COREUOBJECT_API class UObjectBase * FindObjectWithOuter(const class UObjectBase *Outer, const class UClass *ClassToLookFor=nullptr, FName NameToLookFor=NAME_None)
Definition UObjectHash.cpp:1669
COREUOBJECT_API TMap< UClass *, TSet< UClass * > > GetAllDerivedClasses()
Definition UObjectHash.cpp:1906
UPackage * GetObjectExternalPackageInternal(const class UObjectBase *Object)
COREUOBJECT_API void LogHashOuterStatistics(FOutputDevice &Ar, const bool bShowHashBucketCollisionInfo)
Definition UObjectHash.cpp:2286
COREUOBJECT_API void GetObjectsWithPackage(const class UPackage *Outer, TArray< UObject * > &Results, bool bIncludeNestedObjects=true, EObjectFlags ExclusionFlags=RF_NoFlags, EInternalObjectFlags ExclusionInternalFlags=EInternalObjectFlags::None)
Definition UObjectHash.cpp:1710
COREUOBJECT_API void ForEachObjectOfClasses(TArrayView< const UClass *const > ClassesToLookFor, TFunctionRef< void(UObject *)> Operation, EObjectFlags ExcludeFlags=RF_ClassDefaultObject, EInternalObjectFlags ExclusionInternalFlags=EInternalObjectFlags::None)
Definition UObjectHash.cpp:1875
COREUOBJECT_API void LogHashMemoryOverheadStatistics(FOutputDevice &Ar, const EObjectMemoryOverheadOptions InOptions)
Definition UObjectHash.cpp:2304
COREUOBJECT_API bool StaticFindAllObjectsFastInternal(TArray< UObject * > &OutFoundObjects, const UClass *ObjectClass, FName ObjectName, EFindObjectFlags Flags=EFindObjectFlags::None, EObjectFlags ExcludeFlags=RF_NoFlags, EInternalObjectFlags ExclusiveInternalFlags=EInternalObjectFlags::None)
Definition UObjectHash.cpp:1181
COREUOBJECT_API void ForEachObjectOfClass(const UClass *ClassToLookFor, TFunctionRef< void(UObject *)> Operation, bool bIncludeDerivedClasses=true, EObjectFlags ExcludeFlags=RF_ClassDefaultObject, EInternalObjectFlags ExclusionInternalFlags=EInternalObjectFlags::None)
Definition UObjectHash.cpp:1856
COREUOBJECT_API uint64 GetRegisteredClassesVersionNumber()
Definition UObjectHash.cpp:1528
void UnhashObject(class UObjectBase *Object)
Definition UObjectHash.cpp:2006
COREUOBJECT_API void ShrinkUObjectHashTables()
Definition UObjectHash.cpp:1514
COREUOBJECT_API uint64 GetRegisteredNativeClassesVersionNumber()
Definition UObjectHash.cpp:1534
COREUOBJECT_API UObject * StaticFindFirstObjectFastInternal(const UClass *ObjectClass, FName ObjectName, EFindObjectFlags Flags=EFindObjectFlags::None, EObjectFlags ExcludeFlag=RF_NoFlags, EInternalObjectFlags ExclusiveInternalFlags=EInternalObjectFlags::None)
Definition UObjectHash.cpp:1226
EObjectMemoryOverheadOptions
Definition UObjectHash.h:320
COREUOBJECT_API UObject * StaticFindObjectFastInternal(const UClass *Class, const UObject *InOuter, FName InName, EFindObjectFlags Flags=EFindObjectFlags::None, EObjectFlags ExclusiveFlags=RF_NoFlags, EInternalObjectFlags ExclusiveInternalFlags=EInternalObjectFlags::None)
Definition UObjectHash.cpp:1153
COREUOBJECT_API void GetObjectsOfClass(const UClass *ClassToLookFor, TArray< UObject * > &Results, bool bIncludeDerivedClasses=true, EObjectFlags ExcludeFlags=RF_ClassDefaultObject, EInternalObjectFlags ExclusionInternalFlags=EInternalObjectFlags::None)
Definition UObjectHash.cpp:1812
void LockUObjectHashTables()
Definition UObjectHash.cpp:2119
COREUOBJECT_API bool ClassHasInstancesAsyncLoading(const UClass *ClassToLookFor)
Definition UObjectHash.cpp:1913
COREUOBJECT_API void LogHashStatistics(FOutputDevice &Ar, const bool bShowHashBucketCollisionInfo)
Definition UObjectHash.cpp:2276
COREUOBJECT_API void ForEachObjectWithOuterBreakable(const class UObjectBase *Outer, TFunctionRef< bool(UObject *)> Operation, bool bIncludeNestedObjects=true, EObjectFlags ExclusionFlags=RF_NoFlags, EInternalObjectFlags ExclusionInternalFlags=EInternalObjectFlags::None)
Definition UObjectHash.cpp:1615
UPackage * GetObjectExternalPackageThreadSafe(const class UObjectBase *Object)
void HashObject(class UObjectBase *Object)
Definition UObjectHash.cpp:1949
void UnlockUObjectHashTables()
Definition UObjectHash.cpp:2131
void ForEachObjectWithOuter(const class UObjectBase *Outer, TFunctionRef< void(UObject *)> Operation, bool bIncludeNestedObjects=true, EObjectFlags ExclusionFlags=RF_NoFlags, EInternalObjectFlags ExclusionInternalFlags=EInternalObjectFlags::None)
Definition UObjectHash.h:152
COREUOBJECT_API void GetObjectsWithOuter(const class UObjectBase *Outer, TArray< UObject * > &Results, bool bIncludeNestedObjects=true, EObjectFlags ExclusionFlags=RF_NoFlags, EInternalObjectFlags ExclusionInternalFlags=EInternalObjectFlags::None)
Definition UObjectHash.cpp:1551
Definition NameTypes.h:617
Definition OutputDevice.h:133
Definition UObjectHash.h:358
UE_FORCEINLINE_HINT ~FScopedUObjectHashTablesLock()
Definition UObjectHash.h:364
UE_FORCEINLINE_HINT FScopedUObjectHashTablesLock()
Definition UObjectHash.h:360
Definition ArrayView.h:139
Definition Array.h:670
Definition AssetRegistryState.h:50
Definition UnrealString.h.inl:34
Definition Class.h:3793
Definition UObjectBase.h:59
Definition Object.h:95
Definition Package.h:216
Definition RemoteObjectTypes.h:212