UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
CompiledInObjectRegistry.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
6
7#if UE_WITH_CONSTINIT_UOBJECT
8
9#include "Misc/TVariant.h"
12
13class FCompiledInObjectRegistry
14{
15 UE_NONCOPYABLE(FCompiledInObjectRegistry);
16 FCompiledInObjectRegistry() = default;
18
19 // Linked list of objects to construct. New items are added here, before items that may have
20 // already been partially processed which are indicated by the following pointers.
21 FRegisterCompiledInObjects* ListHead = nullptr;
22 // First block of objects that have already been processed by AddAndHashObjects
24 // First block of objects that have already been processed by FinishConstructingObjects
26 // First block of objects that have already been processed by CreateClassDefaultObjects
28
29public:
30 static FCompiledInObjectRegistry& Get()
31 {
32 static FCompiledInObjectRegistry Singleton;
33 return Singleton;
34 }
35
37 void AddObjects(FRegisterCompiledInObjects* Info);
38
40 void EmptyObjects();
41
44
46 [[nodiscard]] bool HasPendingObjects() const;
47
49 void AddAndHashObjects();
50
55
63
65 void AssembleReferenceTokenStream();
66
67private:
68 // Iterate all linked FRegisterCompiledInObjects until Stop (not including it) and call F with each as a concrete variant
69 template<typename... FUNCTORS>
70 void Iterate(FRegisterCompiledInObjects* Stop, FUNCTORS&&... FS);
71
72 template<typename FUNCTOR>
74
75 template<typename FUNCTOR>
77
78 template<typename FUNCTOR>
80
81 template<typename FUNCTOR>
83
84#if WITH_METADATA
88#endif
89 static void AddMetaData(UStruct* Object);
90 static void AddMetaData(UEnum* Object);
91};
92
93
94inline void FCompiledInObjectRegistry::AddObjects(FRegisterCompiledInObjects* Info)
95{
96 // Insert new objects at the head of the list - AlreadyAdded/AlreadyConstructed keeps track of what we've already processed
97 Info->ListNext = ListHead;
98 ListHead = Info;
99}
100
101#endif // UE_WITH_CONSTINIT_UOBJECT
#define UE_NONCOPYABLE(TypeName)
Definition CoreMiscDefines.h:457
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
@ Stop
Definition PrecomputedVolumetricLightmapStreaming.cpp:26
Definition NameTypes.h:617
Definition Class.h:2791
Definition Object.h:95
Definition Class.h:480
FORCEINLINE T * Get(const FObjectPtr &ObjectPtr)
Definition ObjectPtr.h:426