UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
FCbWriter Class Reference

#include <CompactBinaryWriter.h>

+ Inheritance diagram for FCbWriter:

Public Types

enum class  EStateFlags : uint8 {
  None = 0 , Name = 1 << 0 , Field = 1 << 1 , Array = 1 << 2 ,
  Object = 1 << 3
}
 

Public Member Functions

CORE_API FCbWriter ()
 
CORE_API ~FCbWriter ()
 
 FCbWriter (const FCbWriter &)=delete
 
FCbWriteroperator= (const FCbWriter &)=delete
 
CORE_API void Reset ()
 
CORE_API FCbFieldIterator Save () const
 
CORE_API FCbFieldViewIterator Save (FMutableMemoryView Buffer) const
 
CORE_API void Save (FArchive &Ar) const
 
CORE_API uint64 GetSaveSize () const
 
CORE_API FCbWriterSetName (FUtf8StringView Name)
 
void AddField (FUtf8StringView Name, const FCbFieldView &Value)
 
CORE_API void AddField (const FCbFieldView &Value)
 
void AddField (FUtf8StringView Name, const FCbField &Value)
 
CORE_API void AddField (const FCbField &Value)
 
void BeginObject (FUtf8StringView Name)
 
CORE_API void BeginObject ()
 
CORE_API void EndObject ()
 
void AddObject (FUtf8StringView Name, const FCbObjectView &Value)
 
CORE_API void AddObject (const FCbObjectView &Value)
 
void AddObject (FUtf8StringView Name, const FCbObject &Value)
 
CORE_API void AddObject (const FCbObject &Value)
 
void BeginArray (FUtf8StringView Name)
 
CORE_API void BeginArray ()
 
CORE_API void EndArray ()
 
void AddArray (FUtf8StringView Name, const FCbArrayView &Value)
 
CORE_API void AddArray (const FCbArrayView &Value)
 
void AddArray (FUtf8StringView Name, const FCbArray &Value)
 
CORE_API void AddArray (const FCbArray &Value)
 
void AddNull (FUtf8StringView Name)
 
CORE_API void AddNull ()
 
void AddBinary (FUtf8StringView Name, const void *Value, uint64 Size)
 
CORE_API void AddBinary (const void *Value, uint64 Size)
 
void AddBinary (FUtf8StringView Name, FMemoryView Value)
 
void AddBinary (FMemoryView Value)
 
void AddBinary (FUtf8StringView Name, const FSharedBuffer &Value)
 
CORE_API void AddBinary (const FSharedBuffer &Value)
 
void AddBinary (FUtf8StringView Name, const FCompositeBuffer &Value)
 
CORE_API void AddBinary (const FCompositeBuffer &Value)
 
void AddString (FUtf8StringView Name, FUtf8StringView Value)
 
CORE_API void AddString (FUtf8StringView Value)
 
void AddString (FUtf8StringView Name, FWideStringView Value)
 
CORE_API void AddString (FWideStringView Value)
 
void AddInteger (FUtf8StringView Name, int32 Value)
 
CORE_API void AddInteger (int32 Value)
 
void AddInteger (FUtf8StringView Name, int64 Value)
 
CORE_API void AddInteger (int64 Value)
 
void AddInteger (FUtf8StringView Name, uint32 Value)
 
CORE_API void AddInteger (uint32 Value)
 
void AddInteger (FUtf8StringView Name, uint64 Value)
 
CORE_API void AddInteger (uint64 Value)
 
void AddFloat (FUtf8StringView Name, float Value)
 
CORE_API void AddFloat (float Value)
 
void AddFloat (FUtf8StringView Name, double Value)
 
CORE_API void AddFloat (double Value)
 
void AddBool (FUtf8StringView Name, bool bValue)
 
CORE_API void AddBool (bool bValue)
 
void AddObjectAttachment (FUtf8StringView Name, const FIoHash &Value)
 
CORE_API void AddObjectAttachment (const FIoHash &Value)
 
void AddBinaryAttachment (FUtf8StringView Name, const FIoHash &Value)
 
CORE_API void AddBinaryAttachment (const FIoHash &Value)
 
void AddAttachment (FUtf8StringView Name, const FCbAttachment &Attachment)
 
CORE_API void AddAttachment (const FCbAttachment &Attachment)
 
void AddHash (FUtf8StringView Name, const FIoHash &Value)
 
CORE_API void AddHash (const FIoHash &Value)
 
void AddUuid (FUtf8StringView Name, const FGuid &Value)
 
CORE_API void AddUuid (const FGuid &Value)
 
void AddDateTimeTicks (FUtf8StringView Name, int64 Ticks)
 
CORE_API void AddDateTimeTicks (int64 Ticks)
 
CORE_API void AddDateTime (FUtf8StringView Name, FDateTime Value)
 
CORE_API void AddDateTime (FDateTime Value)
 
void AddTimeSpanTicks (FUtf8StringView Name, int64 Ticks)
 
CORE_API void AddTimeSpanTicks (int64 Ticks)
 
CORE_API void AddTimeSpan (FUtf8StringView Name, FTimespan Value)
 
CORE_API void AddTimeSpan (FTimespan Value)
 
void AddObjectId (FUtf8StringView Name, const FCbObjectId &Value)
 
CORE_API void AddObjectId (const FCbObjectId &Value)
 
void AddCustom (FUtf8StringView FieldName, uint64 TypeId, FMemoryView Value)
 
CORE_API void AddCustom (uint64 TypeId, FMemoryView Value)
 
void AddCustom (FUtf8StringView FieldName, FUtf8StringView TypeName, FMemoryView Value)
 
CORE_API void AddCustom (FUtf8StringView TypeName, FMemoryView Value)
 
FCbWriteroperator<< (FUtf8StringView NameOrValue)
 
FCbWriteroperator<< (const ANSICHAR *NameOrValue)
 
FCbWriteroperator<< (const UTF8CHAR *NameOrValue)
 
FCbWriteroperator<< (const FCbFieldView &Value)
 
FCbWriteroperator<< (const FCbField &Value)
 
FCbWriteroperator<< (const FCbObjectView &Value)
 
FCbWriteroperator<< (const FCbObject &Value)
 
FCbWriteroperator<< (const FCbArrayView &Value)
 
FCbWriteroperator<< (const FCbArray &Value)
 
FCbWriteroperator<< (TYPE_OF_NULLPTR)
 
FCbWriteroperator<< (FWideStringView Value)
 
FCbWriteroperator<< (const WIDECHAR *Value)
 
FCbWriteroperator<< (int32 Value)
 
FCbWriteroperator<< (int64 Value)
 
FCbWriteroperator<< (uint32 Value)
 
FCbWriteroperator<< (uint64 Value)
 
FCbWriteroperator<< (float Value)
 
FCbWriteroperator<< (double Value)
 
FCbWriteroperator<< (bool Value)
 
FCbWriteroperator<< (const FCbAttachment &Attachment)
 
FCbWriteroperator<< (const FIoHash &Value)
 
FCbWriteroperator<< (const FGuid &Value)
 
CORE_API FCbWriteroperator<< (FDateTime Value)
 
CORE_API FCbWriteroperator<< (FTimespan Value)
 
FCbWriteroperator<< (const FCbObjectId &Value)
 
CORE_API FCbWriteroperator<< (const FString &Value)
 
CORE_API FCbWriteroperator<< (const FAnsiString &Value)
 
CORE_API FCbWriteroperator<< (const FUtf8String &Value)
 
CORE_API FCbWriteroperator<< (FName Value)
 
template<typename T , typename Allocator , std::void_t< decltype(std::declval< FCbWriter & >()<< std::declval< const T & >())> * = nullptr>
FCbWriteroperator<< (const TArray< T, Allocator > &Value)
 

Protected Member Functions

CORE_API FCbWriter (int64 InitialSize)
 

Detailed Description

A writer for compact binary object, arrays, and fields.

The writer produces a sequence of fields that can be saved to a provided memory buffer or into a new owned buffer. The typical use case is to write a single object, which can be accessed by calling Save().AsObject() or Save(Buffer).AsObjectView().

The writer will assert on most incorrect usage and will always produce valid compact binary if provided with valid input. The writer does not check for invalid UTF-8 string encoding, object fields with duplicate names, or invalid compact binary being copied from another source.

It is most convenient to use the streaming API for the writer, as demonstrated in the example.

When writing a small amount of compact binary data, TCbWriter can be more efficient as it uses a fixed-size stack buffer for storage before spilling onto the heap.

See also
TCbWriter

Example:

FCbObject WriteObject() { TCbWriter<256> Writer; Writer.BeginObject();

Writer << "Resize" << true; Writer << "MaxWidth" << 1024; Writer << "MaxHeight" << 1024;

Writer.BeginArray(); Writer << "FormatA" << "FormatB" << "FormatC"; Writer.EndArray();

Writer.EndObject(); return Writer.Save().AsObject(); }

Member Enumeration Documentation

◆ EStateFlags

Enumerator
None 
Name 

Whether a name has been written for the current field.

Field 

Whether this state is in the process of writing a field.

Array 

Whether this state is for array fields.

Object 

Whether this state is for object fields.

Constructor & Destructor Documentation

◆ FCbWriter() [1/3]

FCbWriter::FCbWriter ( )

◆ ~FCbWriter()

FCbWriter::~FCbWriter ( )

◆ FCbWriter() [2/3]

FCbWriter::FCbWriter ( const FCbWriter )
delete

◆ FCbWriter() [3/3]

FCbWriter::FCbWriter ( int64  InitialSize)
explicitprotected

Reserve the specified size up front until the format is optimized.

Member Function Documentation

◆ AddArray() [1/4]

void FCbWriter::AddArray ( const FCbArray Value)

◆ AddArray() [2/4]

void FCbWriter::AddArray ( const FCbArrayView Value)

◆ AddArray() [3/4]

void FCbWriter::AddArray ( FUtf8StringView  Name,
const FCbArray Value 
)
inline

Copy the value (not the name) of an existing array. Holds a reference if owned.

◆ AddArray() [4/4]

void FCbWriter::AddArray ( FUtf8StringView  Name,
const FCbArrayView Value 
)
inline

Copy the value (not the name) of an existing array.

◆ AddAttachment() [1/2]

void FCbWriter::AddAttachment ( const FCbAttachment Attachment)

◆ AddAttachment() [2/2]

void FCbWriter::AddAttachment ( FUtf8StringView  Name,
const FCbAttachment Attachment 
)
inline

Write a field referencing the attachment by its hash.

◆ AddBinary() [1/8]

void FCbWriter::AddBinary ( const FCompositeBuffer Value)

◆ AddBinary() [2/8]

void FCbWriter::AddBinary ( const FSharedBuffer Value)

◆ AddBinary() [3/8]

void FCbWriter::AddBinary ( const void Value,
uint64  Size 
)

◆ AddBinary() [4/8]

void FCbWriter::AddBinary ( FMemoryView  Value)
inline

◆ AddBinary() [5/8]

void FCbWriter::AddBinary ( FUtf8StringView  Name,
const FCompositeBuffer Value 
)
inline

◆ AddBinary() [6/8]

void FCbWriter::AddBinary ( FUtf8StringView  Name,
const FSharedBuffer Value 
)
inline

Write a binary field by copying the buffer. Holds a reference if owned.

◆ AddBinary() [7/8]

void FCbWriter::AddBinary ( FUtf8StringView  Name,
const void Value,
uint64  Size 
)
inline

Write a binary field by copying Size bytes from Value.

◆ AddBinary() [8/8]

void FCbWriter::AddBinary ( FUtf8StringView  Name,
FMemoryView  Value 
)
inline

Write a binary field by copying the view.

◆ AddBinaryAttachment() [1/2]

void FCbWriter::AddBinaryAttachment ( const FIoHash Value)

◆ AddBinaryAttachment() [2/2]

void FCbWriter::AddBinaryAttachment ( FUtf8StringView  Name,
const FIoHash Value 
)
inline

Write a field referencing a binary attachment by its hash.

◆ AddBool() [1/2]

void FCbWriter::AddBool ( bool  bValue)

◆ AddBool() [2/2]

void FCbWriter::AddBool ( FUtf8StringView  Name,
bool  bValue 
)
inline

Write a bool field.

◆ AddCustom() [1/4]

void FCbWriter::AddCustom ( FUtf8StringView  FieldName,
FUtf8StringView  TypeName,
FMemoryView  Value 
)
inline

Write a custom field with a string sub-type identifier.

◆ AddCustom() [2/4]

void FCbWriter::AddCustom ( FUtf8StringView  FieldName,
uint64  TypeId,
FMemoryView  Value 
)
inline

Write a custom field with an integer sub-type identifier.

◆ AddCustom() [3/4]

void FCbWriter::AddCustom ( FUtf8StringView  TypeName,
FMemoryView  Value 
)

◆ AddCustom() [4/4]

void FCbWriter::AddCustom ( uint64  TypeId,
FMemoryView  Value 
)

◆ AddDateTime() [1/2]

void FCbWriter::AddDateTime ( FDateTime  Value)

◆ AddDateTime() [2/2]

void FCbWriter::AddDateTime ( FUtf8StringView  Name,
FDateTime  Value 
)

Write a date/time field.

◆ AddDateTimeTicks() [1/2]

void FCbWriter::AddDateTimeTicks ( FUtf8StringView  Name,
int64  Ticks 
)
inline

Write a date/time field with the specified count of 100ns ticks since the epoch.

◆ AddDateTimeTicks() [2/2]

void FCbWriter::AddDateTimeTicks ( int64  Ticks)

◆ AddField() [1/4]

void FCbWriter::AddField ( const FCbField Value)

◆ AddField() [2/4]

void FCbWriter::AddField ( const FCbFieldView Value)

◆ AddField() [3/4]

void FCbWriter::AddField ( FUtf8StringView  Name,
const FCbField Value 
)
inline

Copy the value (not the name) of an existing field. Holds a reference if owned.

◆ AddField() [4/4]

void FCbWriter::AddField ( FUtf8StringView  Name,
const FCbFieldView Value 
)
inline

Copy the value (not the name) of an existing field.

◆ AddFloat() [1/4]

void FCbWriter::AddFloat ( double  Value)

◆ AddFloat() [2/4]

void FCbWriter::AddFloat ( float  Value)

◆ AddFloat() [3/4]

void FCbWriter::AddFloat ( FUtf8StringView  Name,
double  Value 
)
inline

Write a float field from a 64-bit float value.

◆ AddFloat() [4/4]

void FCbWriter::AddFloat ( FUtf8StringView  Name,
float  Value 
)
inline

Write a float field from a 32-bit float value.

◆ AddHash() [1/2]

void FCbWriter::AddHash ( const FIoHash Value)

◆ AddHash() [2/2]

void FCbWriter::AddHash ( FUtf8StringView  Name,
const FIoHash Value 
)
inline

Write a hash field.

◆ AddInteger() [1/8]

void FCbWriter::AddInteger ( FUtf8StringView  Name,
int32  Value 
)
inline

Write an integer field.

◆ AddInteger() [2/8]

void FCbWriter::AddInteger ( FUtf8StringView  Name,
int64  Value 
)
inline

Write an integer field.

◆ AddInteger() [3/8]

void FCbWriter::AddInteger ( FUtf8StringView  Name,
uint32  Value 
)
inline

Write an integer field.

◆ AddInteger() [4/8]

void FCbWriter::AddInteger ( FUtf8StringView  Name,
uint64  Value 
)
inline

Write an integer field.

◆ AddInteger() [5/8]

void FCbWriter::AddInteger ( int32  Value)

◆ AddInteger() [6/8]

void FCbWriter::AddInteger ( int64  Value)

◆ AddInteger() [7/8]

void FCbWriter::AddInteger ( uint32  Value)

◆ AddInteger() [8/8]

void FCbWriter::AddInteger ( uint64  Value)

◆ AddNull() [1/2]

void FCbWriter::AddNull ( )

◆ AddNull() [2/2]

void FCbWriter::AddNull ( FUtf8StringView  Name)
inline

Write a null field.

◆ AddObject() [1/4]

void FCbWriter::AddObject ( const FCbObject Value)

◆ AddObject() [2/4]

void FCbWriter::AddObject ( const FCbObjectView Value)

◆ AddObject() [3/4]

void FCbWriter::AddObject ( FUtf8StringView  Name,
const FCbObject Value 
)
inline

Copy the value (not the name) of an existing object. Holds a reference if owned.

◆ AddObject() [4/4]

void FCbWriter::AddObject ( FUtf8StringView  Name,
const FCbObjectView Value 
)
inline

Copy the value (not the name) of an existing object.

◆ AddObjectAttachment() [1/2]

void FCbWriter::AddObjectAttachment ( const FIoHash Value)

◆ AddObjectAttachment() [2/2]

void FCbWriter::AddObjectAttachment ( FUtf8StringView  Name,
const FIoHash Value 
)
inline

Write a field referencing an object attachment by its hash.

◆ AddObjectId() [1/2]

void FCbWriter::AddObjectId ( const FCbObjectId Value)

◆ AddObjectId() [2/2]

void FCbWriter::AddObjectId ( FUtf8StringView  Name,
const FCbObjectId Value 
)
inline

Write an ObjectId field.

◆ AddString() [1/4]

void FCbWriter::AddString ( FUtf8StringView  Name,
FUtf8StringView  Value 
)
inline

Write a string field by copying the UTF-8 value.

◆ AddString() [2/4]

void FCbWriter::AddString ( FUtf8StringView  Name,
FWideStringView  Value 
)
inline

Write a string field by converting the UTF-16 value to UTF-8.

◆ AddString() [3/4]

void FCbWriter::AddString ( FUtf8StringView  Value)

◆ AddString() [4/4]

void FCbWriter::AddString ( FWideStringView  Value)

◆ AddTimeSpan() [1/2]

void FCbWriter::AddTimeSpan ( FTimespan  Value)

◆ AddTimeSpan() [2/2]

void FCbWriter::AddTimeSpan ( FUtf8StringView  Name,
FTimespan  Value 
)

Write a time span field.

◆ AddTimeSpanTicks() [1/2]

void FCbWriter::AddTimeSpanTicks ( FUtf8StringView  Name,
int64  Ticks 
)
inline

Write a time span field with the specified count of 100ns ticks.

◆ AddTimeSpanTicks() [2/2]

void FCbWriter::AddTimeSpanTicks ( int64  Ticks)

◆ AddUuid() [1/2]

void FCbWriter::AddUuid ( const FGuid Value)

◆ AddUuid() [2/2]

void FCbWriter::AddUuid ( FUtf8StringView  Name,
const FGuid Value 
)
inline

Write a UUID field.

◆ BeginArray() [1/2]

void FCbWriter::BeginArray ( )

◆ BeginArray() [2/2]

void FCbWriter::BeginArray ( FUtf8StringView  Name)
inline

Begin a new array. Must have a matching call to EndArray.

◆ BeginObject() [1/2]

void FCbWriter::BeginObject ( )

◆ BeginObject() [2/2]

void FCbWriter::BeginObject ( FUtf8StringView  Name)
inline

Begin a new object. Must have a matching call to EndObject.

◆ EndArray()

void FCbWriter::EndArray ( )

End an array after its fields have been written.

◆ EndObject()

void FCbWriter::EndObject ( )

End an object after its fields have been written.

◆ GetSaveSize()

uint64 FCbWriter::GetSaveSize ( ) const

The size of buffer (in bytes) required to serialize the fields that have been written.

It is not valid to call this function in the middle of writing an object, array, or field.

◆ operator<<() [1/30]

FCbWriter & FCbWriter::operator<< ( bool  Value)
inline

◆ operator<<() [2/30]

FCbWriter & FCbWriter::operator<< ( const ANSICHAR NameOrValue)
inline

Write the field name if valid in this state, otherwise write the string value.

◆ operator<<() [3/30]

FCbWriter & FCbWriter::operator<< ( const FAnsiString Value)

◆ operator<<() [4/30]

FCbWriter & FCbWriter::operator<< ( const FCbArray Value)
inline

◆ operator<<() [5/30]

FCbWriter & FCbWriter::operator<< ( const FCbArrayView Value)
inline

◆ operator<<() [6/30]

FCbWriter & FCbWriter::operator<< ( const FCbAttachment Attachment)
inline

◆ operator<<() [7/30]

FCbWriter & FCbWriter::operator<< ( const FCbField Value)
inline

◆ operator<<() [8/30]

FCbWriter & FCbWriter::operator<< ( const FCbFieldView Value)
inline

◆ operator<<() [9/30]

FCbWriter & FCbWriter::operator<< ( const FCbObject Value)
inline

◆ operator<<() [10/30]

FCbWriter & FCbWriter::operator<< ( const FCbObjectId Value)
inline

◆ operator<<() [11/30]

FCbWriter & FCbWriter::operator<< ( const FCbObjectView Value)
inline

◆ operator<<() [12/30]

FCbWriter & FCbWriter::operator<< ( const FGuid Value)
inline

◆ operator<<() [13/30]

FCbWriter & FCbWriter::operator<< ( const FIoHash Value)
inline

◆ operator<<() [14/30]

FCbWriter & FCbWriter::operator<< ( const FString &  Value)

◆ operator<<() [15/30]

FCbWriter & FCbWriter::operator<< ( const FUtf8String Value)

◆ operator<<() [16/30]

template<typename T , typename Allocator , std::void_t< decltype(std::declval< FCbWriter & >()<< std::declval< const T & >())> * = nullptr>
FCbWriter & FCbWriter::operator<< ( const TArray< T, Allocator > &  Value)
inline

◆ operator<<() [17/30]

FCbWriter & FCbWriter::operator<< ( const UTF8CHAR NameOrValue)
inline

Write the field name if valid in this state, otherwise write the string value.

◆ operator<<() [18/30]

FCbWriter & FCbWriter::operator<< ( const WIDECHAR Value)
inline

◆ operator<<() [19/30]

FCbWriter & FCbWriter::operator<< ( double  Value)
inline

◆ operator<<() [20/30]

FCbWriter & FCbWriter::operator<< ( FDateTime  Value)

◆ operator<<() [21/30]

FCbWriter & FCbWriter::operator<< ( float  Value)
inline

◆ operator<<() [22/30]

FCbWriter & FCbWriter::operator<< ( FName  Value)

◆ operator<<() [23/30]

FCbWriter & FCbWriter::operator<< ( FTimespan  Value)

◆ operator<<() [24/30]

FCbWriter & FCbWriter::operator<< ( FUtf8StringView  NameOrValue)
inline

Write the field name if valid in this state, otherwise write the string value.

◆ operator<<() [25/30]

FCbWriter & FCbWriter::operator<< ( FWideStringView  Value)
inline

◆ operator<<() [26/30]

FCbWriter & FCbWriter::operator<< ( int32  Value)
inline

◆ operator<<() [27/30]

FCbWriter & FCbWriter::operator<< ( int64  Value)
inline

◆ operator<<() [28/30]

FCbWriter & FCbWriter::operator<< ( TYPE_OF_NULLPTR  )
inline

◆ operator<<() [29/30]

FCbWriter & FCbWriter::operator<< ( uint32  Value)
inline

◆ operator<<() [30/30]

FCbWriter & FCbWriter::operator<< ( uint64  Value)
inline

◆ operator=()

FCbWriter & FCbWriter::operator= ( const FCbWriter )
delete

◆ Reset()

void FCbWriter::Reset ( )

Empty the writer without releasing any allocated memory.

◆ Save() [1/3]

FCbFieldIterator FCbWriter::Save ( ) const

Serialize the field(s) to an owned buffer and return it as an iterator.

It is not valid to call this function in the middle of writing an object, array, or field. The writer remains valid for further use when this function returns.

◆ Save() [2/3]

void FCbWriter::Save ( FArchive Ar) const

Serialize the field(s) to an archive.

It is not valid to call this function in the middle of writing an object, array, or field. The writer remains valid for further use when this function returns.

Parameters
ArAn archive to write to. Exactly GetSaveSize() bytes will be written.

◆ Save() [3/3]

FCbFieldViewIterator FCbWriter::Save ( FMutableMemoryView  Buffer) const

Serialize the field(s) to memory.

It is not valid to call this function in the middle of writing an object, array, or field. The writer remains valid for further use when this function returns.

Parameters
BufferA mutable memory view to write to. Must be exactly GetSaveSize() bytes.
Returns
An iterator for the field(s) written to the buffer.

◆ SetName()

FCbWriter & FCbWriter::SetName ( FUtf8StringView  Name)

Sets the name of the next field to be written.

It is not valid to call this function when writing a field inside an array. Names must be valid UTF-8 and must be unique within an object.


The documentation for this class was generated from the following files: