UDocumentation
UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
RegisterCompiledInObjects.h
Go to the documentation of this file.
1
// Copyright Epic Games, Inc. All Rights Reserved.
2
3
#pragma once
4
5
#include "
UObject/ObjectMacros.h
"
6
7
#if UE_WITH_CONSTINIT_UOBJECT
8
9
#include "
Containers/ArrayView.h
"
10
#include "
Misc/TVariant.h
"
11
#include "
UObject/UObjectGlobals.h
"
12
13
class
UClass
;
14
class
UDelegateFunction
;
15
class
UObject
;
16
class
UPackage
;
17
18
// Register partially initialized objects such as packages, classes, structs and enums for runtime construction
19
// This structure is stored as a linked list where possible to avoid dynamic allocation during startup
20
struct
FRegisterCompiledInObjects
21
{
22
using
FIntrinsicClassConstructor
=
void
();
23
24
// Register an intrinsic class with a special initialization function
25
FRegisterCompiledInObjects
(
UClass
*
InClass
,
FIntrinsicClassConstructor
*
InConstructor
)
26
:
FRegisterCompiledInObjects
(
FIntrinsicClassRegistrant
{
InClass
,
InConstructor
})
27
{
28
}
29
30
// Register a package and some objects that might otherwise not be registered - e.g. noexport structs and delegate
31
// function signatures. ArrayView should point to static memory
32
FRegisterCompiledInObjects
(
UPackage
* InPackage,
TConstArrayView<UObject*>
Others
)
33
:
FRegisterCompiledInObjects
(
FPackageRegistrants
{InPackage,
Others
})
34
{
35
}
36
37
// Primary entry point - register a batch of objects from a single generated cpp file all together
38
// ArrayView should point to static memory
39
// Constructors for each possible set of parameters are provided to reduce code size at the call site
40
FRegisterCompiledInObjects
(
41
TConstArrayView<UClass*>
InClasses
,
42
TConstArrayView<UScriptStruct*>
InStructs
,
43
TConstArrayView<UEnum*>
InEnums
)
44
:
FRegisterCompiledInObjects
(
FClassRegistrants
{
InClasses
,
InStructs
,
InEnums
})
45
{
46
}
47
FRegisterCompiledInObjects
(
48
TConstArrayView<UClass*>
InClasses
)
49
:
FRegisterCompiledInObjects
(
FClassRegistrants
{
InClasses
, {}, {}})
50
{
51
}
52
FRegisterCompiledInObjects
(
53
TConstArrayView<UClass*>
InClasses
,
54
TConstArrayView<UScriptStruct*>
InStructs
)
55
:
FRegisterCompiledInObjects
(
FClassRegistrants
{
InClasses
,
InStructs
, {}})
56
{
57
}
58
FRegisterCompiledInObjects
(
59
TConstArrayView<UClass*>
InClasses
,
60
TConstArrayView<UEnum*>
InEnums
)
61
:
FRegisterCompiledInObjects
(
FClassRegistrants
{
InClasses
, {},
InEnums
})
62
{
63
}
64
FRegisterCompiledInObjects
(
65
TConstArrayView<UScriptStruct*>
InStructs
,
66
TConstArrayView<UEnum*>
InEnums
)
67
:
FRegisterCompiledInObjects
(
FClassRegistrants
{{},
InStructs
,
InEnums
})
68
{
69
}
70
FRegisterCompiledInObjects
(
71
TConstArrayView<UScriptStruct*>
InStructs
)
72
:
FRegisterCompiledInObjects
(
FClassRegistrants
{{},
InStructs
, {}})
73
{
74
}
75
FRegisterCompiledInObjects
(
76
TConstArrayView<UEnum*>
InEnums
)
77
:
FRegisterCompiledInObjects
(
FClassRegistrants
{{}, {},
InEnums
})
78
{
79
}
80
81
struct
FPackageRegistrants
82
{
83
UPackage
*
Package
=
nullptr
;
84
TConstArrayView<UObject*>
Objects;
85
};
86
87
struct
FClassRegistrants
88
{
89
TConstArrayView<UClass*>
Classes
;
90
TConstArrayView<UScriptStruct*>
Structs
;
91
TConstArrayView<UEnum*>
Enums
;
92
};
93
94
struct
FIntrinsicClassRegistrant
95
{
96
UClass
*
IntrinsicClass
=
nullptr
;
97
FIntrinsicClassConstructor
*
Constructor
=
nullptr
;
98
};
99
100
TVariant<FPackageRegistrants, FClassRegistrants, FIntrinsicClassRegistrant>
Registrants
;
101
FRegisterCompiledInObjects
*
ListNext
=
nullptr
;
102
103
// Delegating constructor
104
template
<
typename
VARIANT>
105
FRegisterCompiledInObjects
(
VARIANT
&&
Variant
)
106
:
Registrants
(
TInPlaceType
<
VARIANT
>{},
Forward<VARIANT>
(
Variant
))
107
{
108
Register
();
109
}
110
111
// Register all our objects for deferred construction
112
COREUOBJECT_API
void
Register
();
113
};
114
115
#endif
void
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
ArrayView.h
ECbValidateMode::Package
@ Package
StaticCastSharedRef
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition
SharedPointer.h:127
ECustomVersionSerializationFormat::Enums
@ Enums
EDatasmithElementType::Variant
@ Variant
ELWCFunctionKind::Constructor
@ Constructor
ObjectMacros.h
TVariant.h
UObjectGlobals.h
EVectorVMOperandLocation::Register
@ Register
TVariant
Definition
TVariant.h:48
UClass
Definition
Class.h:3793
UDelegateFunction
Definition
Class.h:2681
UObject
Definition
Object.h:95
UPackage
Definition
Package.h:216
TInPlaceType
Definition
TVariant.h:13
Engine
Source
Runtime
CoreUObject
Public
UObject
RegisterCompiledInObjects.h
Generated by
1.9.8