UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
CompactBinarySerialization.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
7#include "CoreTypes.h"
8#include "IO/IoHash.h"
9#include "Memory/MemoryFwd.h"
10#include "Memory/MemoryView.h"
11#include "Memory/SharedBuffer.h"
13#include "Templates/Function.h"
14
15class FArchive;
16class FName;
17struct FDateTime;
18struct FGuid;
19
21
23{
24
27
28} // namespace UE::Serialization::Private
29
31
47
69
71
84
89
94
96
113
115{
116 OutValue = Field.AsInt8(Default);
117 return !Field.HasError();
118}
119
121{
122 OutValue = Field.AsInt16(Default);
123 return !Field.HasError();
124}
125
127{
128 OutValue = Field.AsInt32(Default);
129 return !Field.HasError();
130}
131
133{
134 OutValue = Field.AsInt64(Default);
135 return !Field.HasError();
136}
137
139{
140 OutValue = Field.AsUInt8(Default);
141 return !Field.HasError();
142}
143
145{
146 OutValue = Field.AsUInt16(Default);
147 return !Field.HasError();
148}
149
151{
152 OutValue = Field.AsUInt32(Default);
153 return !Field.HasError();
154}
155
157{
158 OutValue = Field.AsUInt64(Default);
159 return !Field.HasError();
160}
161
162inline bool LoadFromCompactBinary(FCbFieldView Field, float& OutValue, const float Default = 0.0f)
163{
164 OutValue = Field.AsFloat(Default);
165 return !Field.HasError();
166}
167
168inline bool LoadFromCompactBinary(FCbFieldView Field, double& OutValue, const double Default = 0.0)
169{
170 OutValue = Field.AsDouble(Default);
171 return !Field.HasError();
172}
173
174inline bool LoadFromCompactBinary(FCbFieldView Field, bool& OutValue, const bool Default = false)
175{
176 OutValue = Field.AsBool(Default);
177 return !Field.HasError();
178}
179
181{
182 OutValue = Field.AsHash(Default);
183 return !Field.HasError();
184}
185
188
191
193{
194 OutValue = Field.AsObjectId(Default);
195 return !Field.HasError();
196}
197
198template <typename T, typename Allocator>
200{
201 const uint64 Length = Field.AsArrayView().Num();
202 if (Length <= MAX_int32)
203 {
204 OutValue.Reset((int32)Length);
205 bool bOk = !Field.HasError();
206 for (const FCbFieldView& ElementField : Field)
207 {
208 bOk = LoadFromCompactBinary(ElementField, OutValue.Emplace_GetRef()) & bOk;
209 }
210 return bOk;
211 }
212 else
213 {
215 return false;
216 }
217}
218
220
228
236
CORE_API FCbField LoadCompactBinary(FArchive &Ar, FCbBufferAllocator Allocator=FUniqueBuffer::Alloc)
Definition CompactBinarySerialization.cpp:305
CORE_API FArchive & operator<<(FArchive &Ar, FCbField &Field)
Definition CompactBinarySerialization.cpp:386
CORE_API void CompactBinaryToJson(const FCbFieldView &Field, FUtf8StringBuilderBase &Builder)
Definition CompactBinarySerialization.cpp:674
CORE_API uint64 MeasureCompactBinary(FMemoryView View, ECbFieldType Type=ECbFieldType::HasFieldType)
Definition CompactBinarySerialization.cpp:156
CORE_API bool LoadFromCompactBinary(FCbFieldView Field, FUtf8StringBuilderBase &OutValue)
Definition CompactBinarySerialization.cpp:403
CORE_API void CompactBinaryToCompactJson(const FCbFieldView &Field, FUtf8StringBuilderBase &Builder)
Definition CompactBinarySerialization.cpp:706
CORE_API void SaveCompactBinary(FArchive &Ar, const FCbFieldView &Field)
Definition CompactBinarySerialization.cpp:348
CORE_API bool TryMeasureCompactBinary(FMemoryView InView, ECbFieldType &OutType, uint64 &OutSize, ECbFieldType InType=ECbFieldType::HasFieldType)
Definition CompactBinarySerialization.cpp:164
ECbFieldType
Definition CompactBinary.h:102
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::int64 int64
A 64-bit signed integer.
Definition Platform.h:1127
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
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
#define MAX_int32
Definition NumericLimits.h:25
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 Archive.h:1208
Definition CompactBinary.h:942
Definition CompactBinary.h:1371
Definition CompactBinary.h:610
Definition CompactBinary.h:1252
Definition CompactBinary.h:479
Definition CompactBinary.h:1025
Definition CompactBinary.h:1392
Definition NameTypes.h:617
static CORE_API FUniqueBuffer Alloc(uint64 Size)
Definition SharedBuffer.cpp:103
Definition Array.h:670
Definition AssetRegistryState.h:50
Definition StringBuilder.h:79
Definition SharedString.h:29
Definition FieldSystemNoiseAlgo.cpp:6
Definition StructuredLog.cpp:42
void LogFieldTooLargeForArrayWarning(uint64 FieldLength)
Definition CompactBinarySerialization.cpp:147
Definition DateTime.h:76
Definition Guid.h:109
Definition IoHash.h:33