UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
CustomVersion.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "Containers/Array.h"
6#include "Containers/Set.h"
8#include "CoreTypes.h"
9#include "HAL/PlatformCrt.h"
10#include "Misc/Crc.h"
11#include "Misc/Guid.h"
12#include "Misc/Optional.h"
15#include "UObject/NameTypes.h"
16
17class FArchive;
19struct FCustomVersion;
20
22{
23 Unknown,
24 Guids,
25 Enums,
27
28 // Add new versions above this comment
31};
32
35
40{
42
45
48
51
54
57 : Validator(nullptr)
58 {
59 }
60
70
73 {
74 return Key == InKey;
75 }
76
79 {
80 return Key != InKey;
81 }
82
85
87 CORE_API const FName GetFriendlyName() const;
88
89private:
90
92 mutable FName FriendlyName;
93};
94
96
99{
100 None,
101
102 // If Set, it will not query the versions registry to update the version data if the key is already in the container
104};
106
107
111{
113
114public:
117 {
118 return Versions;
119 }
120
127 CORE_API const FCustomVersion* GetVersion(FGuid CustomKey) const;
128
135 CORE_API const FName GetFriendlyName(FGuid CustomKey) const;
136
144 CORE_API void SetVersion(FGuid CustomKey, int32 Version, FName FriendlyName);
145
151 CORE_API void SetVersionUsingRegistry(FGuid CustomKey, ESetCustomVersionFlags Options = ESetCustomVersionFlags::None);
152
156
162 UE_DEPRECATED(4.24, "Use one of the thread-safe FCurrentCustomVersions methods instead")
163 static CORE_API const FCustomVersionContainer& GetRegistered();
164
168 CORE_API void Empty();
169
173 CORE_API void SortByKey();
174
176 CORE_API FString ToString(const FString& Indent) const;
177
178private:
179
181 FCustomVersionArray Versions;
182
183};
184
186
192
195{
196public:
199
202
205
206private:
208
209 static CORE_API void Register(const FGuid& Key, int32 Version, const TCHAR* FriendlyName, CustomVersionValidatorFunc ValidatorFunc);
210 static CORE_API void Unregister(const FGuid& Key);
211};
212
213
220{
221public:
223 template<int N>
225 : Key(InKey)
226 {
227 FCurrentCustomVersions::Register(InKey, Version, InFriendlyName, InValidatorFunc);
228 }
229
231 {
232 FCurrentCustomVersions::Unregister(Key);
233 }
234
235private:
236 FGuid Key;
237};
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
FPlatformTypes::TCHAR TCHAR
Either ANSICHAR or WIDECHAR, depending on whether the platform supports wide characters or the requir...
Definition Platform.h:1135
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
#define UE_FORCEINLINE_HINT
Definition Platform.h:723
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
bool(* CustomVersionValidatorFunc)(const FCustomVersion &Version, const FCustomVersionArray &AllVersions, const TCHAR *DebugContext)
Definition CustomVersion.h:34
ESetCustomVersionFlags
Definition CustomVersion.h:99
ECustomVersionDifference
Definition CustomVersion.h:185
ECustomVersionSerializationFormat
Definition CustomVersion.h:22
TArray< FCustomVersion > FCustomVersionArray
Definition CustomVersion.h:33
#define ENUM_CLASS_FLAGS(Enum)
Definition EnumClassFlags.h:6
const bool
Definition NetworkReplayStreaming.h:178
uint8_t uint8
Definition binka_ue_file_header.h:8
Definition Archive.h:1208
Definition CustomVersion.h:195
static CORE_API TArray< FCustomVersionDifference > Compare(const FCustomVersionArray &CompareVersions, const TCHAR *DebugContext)
Definition CustomVersion.cpp:204
static CORE_API FCustomVersionContainer GetAll()
Definition CustomVersion.cpp:178
static CORE_API TOptional< FCustomVersion > Get(const FGuid &Guid)
Definition CustomVersion.cpp:196
Definition CustomVersion.h:111
UE_FORCEINLINE_HINT const FCustomVersionArray & GetAllVersions() const
Definition CustomVersion.h:116
Definition CustomVersion.h:220
~FCustomVersionRegistration()
Definition CustomVersion.h:230
FCustomVersionRegistration(FGuid InKey, int32 Version, const TCHAR(&InFriendlyName)[N], CustomVersionValidatorFunc InValidatorFunc=nullptr)
Definition CustomVersion.h:224
Definition NameTypes.h:617
Definition UnrealTemplate.h:321
Definition StructuredArchiveSlots.h:52
Definition Array.h:670
Definition CustomVersion.h:188
ECustomVersionDifference Type
Definition CustomVersion.h:189
const FCustomVersion * Version
Definition CustomVersion.h:190
Definition CustomVersion.h:40
CORE_API const FName GetFriendlyName() const
Definition CustomVersion.cpp:255
CustomVersionValidatorFunc Validator
Definition CustomVersion.h:53
UE_FORCEINLINE_HINT bool operator==(FGuid InKey) const
Definition CustomVersion.h:72
CORE_API friend FArchive & operator<<(FArchive &Ar, FCustomVersion &Version)
Definition CustomVersion.cpp:302
FCustomVersion(FGuid InKey, int32 InVersion, FName InFriendlyName, CustomVersionValidatorFunc InValidatorFunc=nullptr)
Definition CustomVersion.h:62
int32 Version
Definition CustomVersion.h:47
FGuid Key
Definition CustomVersion.h:44
UE_FORCEINLINE_HINT bool operator!=(FGuid InKey) const
Definition CustomVersion.h:78
int32 ReferenceCount
Definition CustomVersion.h:50
UE_FORCEINLINE_HINT FCustomVersion()
Definition CustomVersion.h:56
Definition Guid.h:109
Definition CustomVersion.cpp:89
Definition Optional.h:131