UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
StructuredArchiveSlots.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 "CoreTypes.h"
8#include "Misc/Build.h"
9#include "Misc/Optional.h"
14#include "Templates/EnableIf.h"
16
17#if !WITH_TEXT_ARCHIVE_SUPPORT
18 #define UE_API FORCEINLINE
19#else
20 #define UE_API CORE_API
21#endif
22
23class FName;
24class FString;
32class FText;
33class UObject;
34struct FLazyObjectPtr;
35struct FObjectPtr;
36struct FSoftObjectPath;
37struct FSoftObjectPtr;
38struct FWeakObjectPtr;
39template <class TEnum> class TEnumAsByte;
40
42{
44}
45
52{
53public:
60
61 // We don't support chaining writes to a single slot, so this returns void.
70 UE_API void operator << (float& Value);
71 UE_API void operator << (double& Value);
72 UE_API void operator << (bool& Value);
74 UE_API void operator << (FString& Value);
77#if WITH_VERSE_VM || defined(__INTELLISENSE__)
78 UE_API void operator << (Verse::VCell*& Value);
79#endif
86
87 template <typename T>
89 {
90 uint8 Tmp = (uint8)Value.GetValue();
91 *this << Tmp;
92 Value = (T)Tmp;
93 }
94
95 template <
96 typename EnumType,
97 std::enable_if_t<TIsEnumClass<EnumType>::Value, int> = 0
98 >
100 {
101 *this << (__underlying_type(EnumType)&)Value;
102 }
103
104 template <typename T>
109
110 template <typename T>
112 {
114 {
115 Attribute.GetValue() << Item.Value;
116 }
117 else
118 {
119 Item.Value = Item.Default;
120 }
121 }
122
123 UE_API void Serialize(TArray<uint8>& Data);
124 UE_API void Serialize(void* Data, uint64 DataSize);
125 CORE_API bool IsFilled() const;
126
127private:
128 friend FStructuredArchive;
135
137};
138
166
172{
173public:
175
176 template<typename T> inline FStructuredArchiveArray& operator<<(T& Item)
177 {
178 EnterElement() << Item;
179 return *this;
180 }
181
182private:
183 friend FStructuredArchive;
185
187};
188
193{
194public:
196
197 template<typename T> inline FStructuredArchiveStream& operator<<(T& Item)
198 {
199 EnterElement() << Item;
200 return *this;
201 }
202
203private:
204 friend FStructuredArchive;
206
208};
209
225
226template <typename T>
228{
229 int32 NumElements = InArray.Num();
230 FStructuredArchiveArray Array = Slot.EnterArray(NumElements);
231
232 if (Slot.GetArchiveState().IsLoading())
233 {
234 InArray.SetNum(NumElements);
235 }
236
237 for (int32 ElementIndex = 0; ElementIndex < NumElements; ++ElementIndex)
238 {
240 ElementSlot << InArray[ElementIndex];
241 }
242}
243
244template <>
249
250#if !WITH_TEXT_ARCHIVE_SUPPORT
256
262
267
273
279
291
296
301
306
311
316
321
326
331
336
341
346
351
356
361
366
367#if WITH_VERSE_VM || defined(__INTELLISENSE__)
369 {
371 }
372#endif
373
378
383
388
393
398
403
408
413
415
420
425
430
435
440
452
454
459
461
466
468
474
475#endif
476
477#undef UE_API
@ InPlace
Definition CoreMiscDefines.h:162
FPlatformTypes::int16 int16
A 16-bit signed integer.
Definition Platform.h:1123
FPlatformTypes::int8 int8
An 8-bit signed integer.
Definition Platform.h:1121
FPlatformTypes::UTF32CHAR UTF32CHAR
A 32-bit character containing a UTF32 (Unicode, 32-bit, fixed-width) code unit.
Definition Platform.h:1143
FPlatformTypes::int64 int64
A 64-bit signed integer.
Definition Platform.h:1127
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
#define UE_FORCEINLINE_HINT
Definition Platform.h:723
FPlatformTypes::uint64 uint64
A 64-bit unsigned integer.
Definition Platform.h:1117
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
@ Num
Definition MetalRHIPrivate.h:234
std::conditional_t< WITH_TEXT_ARCHIVE_SUPPORT, FStructuredArchiveFormatter, FBinaryArchiveFormatter > FArchiveFormatterType
Definition StructuredArchiveFwd.h:26
void operator<<(FStructuredArchiveSlot Slot, TArray< T > &InArray)
Definition StructuredArchiveSlots.h:227
#define UE_API
Definition StructuredArchiveSlots.h:18
uint8_t uint8
Definition binka_ue_file_header.h:8
uint16_t uint16
Definition binka_ue_file_header.h:7
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition NameTypes.h:617
Definition StructuredArchiveSlots.h:172
UE_API FStructuredArchiveSlot EnterElement()
Definition StructuredArchiveSlots.h:455
FStructuredArchiveArray & operator<<(T &Item)
Definition StructuredArchiveSlots.h:176
Definition StructuredArchiveChildReader.h:30
Definition StructuredArchiveSlots.h:215
UE_API FStructuredArchiveSlot EnterElement(FString &Name)
Definition StructuredArchiveSlots.h:469
Definition StructuredArchiveSlots.h:144
UE_API FStructuredArchiveMap EnterMap(FArchiveFieldName Name, int32 &Num)
Definition StructuredArchiveSlots.h:436
UE_API TOptional< FStructuredArchiveSlot > TryEnterField(FArchiveFieldName Name, bool bEnterForSaving)
Definition StructuredArchiveSlots.h:441
UE_API FStructuredArchiveSlot EnterField(FArchiveFieldName Name)
Definition StructuredArchiveSlots.h:416
UE_API FStructuredArchiveStream EnterStream(FArchiveFieldName Name)
Definition StructuredArchiveSlots.h:431
FStructuredArchiveRecord & operator<<(UE::StructuredArchive::Private::TNamedValue< T > Item)
Definition StructuredArchiveSlots.h:154
UE_API FStructuredArchiveRecord EnterRecord(FArchiveFieldName Name)
Definition StructuredArchiveSlots.h:421
UE_API FStructuredArchiveArray EnterArray(FArchiveFieldName Name, int32 &Num)
Definition StructuredArchiveSlots.h:426
Definition StructuredArchiveSlots.h:52
CORE_API bool IsFilled() const
Definition StructuredArchiveSlots.cpp:17
void operator<<(TEnumAsByte< T > &Value)
Definition StructuredArchiveSlots.h:88
UE_FORCEINLINE_HINT void operator<<(UE::StructuredArchive::Private::TNamedAttribute< T > Item)
Definition StructuredArchiveSlots.h:105
UE_API FStructuredArchiveRecord EnterRecord()
Definition StructuredArchiveSlots.h:252
UE_API void Serialize(TArray< uint8 > &Data)
Definition StructuredArchiveSlots.h:404
UE_API FStructuredArchiveSlot EnterAttribute(FArchiveFieldName AttributeName)
Definition StructuredArchiveSlots.h:274
UE_API FStructuredArchiveMap EnterMap(int32 &Num)
Definition StructuredArchiveSlots.h:268
UE_API void operator<<(uint8 &Value)
Definition StructuredArchiveSlots.h:292
UE_API FStructuredArchiveStream EnterStream()
Definition StructuredArchiveSlots.h:263
UE_API TOptional< FStructuredArchiveSlot > TryEnterAttribute(FArchiveFieldName AttributeName, bool bEnterWhenWriting)
Definition StructuredArchiveSlots.h:280
void operator<<(UE::StructuredArchive::Private::TOptionalNamedAttribute< T > Item)
Definition StructuredArchiveSlots.h:111
UE_FORCEINLINE_HINT void operator<<(EnumType &Value)
Definition StructuredArchiveSlots.h:99
UE_API FStructuredArchiveArray EnterArray(int32 &Num)
Definition StructuredArchiveSlots.h:257
Definition StructuredArchiveSlots.h:193
UE_API FStructuredArchiveSlot EnterElement()
Definition StructuredArchiveSlots.h:462
FStructuredArchiveStream & operator<<(T &Item)
Definition StructuredArchiveSlots.h:197
Definition StructuredArchive.h:57
Definition Text.h:385
Definition Array.h:670
Definition EnumAsByte.h:22
Definition StructuredArchiveSlotBase.h:67
EPrivateToken
Definition StructuredArchiveSlotBase.h:73
CORE_API const FArchiveState & GetArchiveState() const
Definition StructuredArchiveSlots.cpp:12
FStructuredArchive & StructuredArchive
Definition StructuredArchiveSlotBase.h:93
UE_FORCEINLINE_HINT FSlotBase(EPrivateToken, FStructuredArchive &InStructuredArchive)
Definition StructuredArchiveSlotBase.h:83
Definition Object.h:95
Definition StructuredArchive.h:29
FArchiveFormatterType & GetFormatterImpl(FStructuredArchive &Ar)
Definition StructuredArchive.h:251
Definition StructuredArchiveNameHelpers.h:10
UE_FORCEINLINE_HINT bool IsLoading() const
Definition Archive.h:236
Definition LazyObjectPtr.h:151
Definition ObjectPtr.h:55
Definition SoftObjectPath.h:56
Definition SoftObjectPtr.h:45
Definition WeakObjectPtr.h:49
Definition Optional.h:131
Definition StructuredArchiveNameHelpers.h:40
FArchiveFieldName Name
Definition StructuredArchiveNameHelpers.h:41
T & Value
Definition StructuredArchiveNameHelpers.h:42
Definition StructuredArchiveNameHelpers.h:30
FArchiveFieldName Name
Definition StructuredArchiveNameHelpers.h:31
T & Value
Definition StructuredArchiveNameHelpers.h:32
Definition StructuredArchiveNameHelpers.h:51
FArchiveFieldName Name
Definition StructuredArchiveNameHelpers.h:52
T & Value
Definition StructuredArchiveNameHelpers.h:53
const T & Default
Definition StructuredArchiveNameHelpers.h:54