CeresEngine 0.2.0
A game development framework
Loading...
Searching...
No Matches
CeresEngine::Serializer Class Referenceabstract

The serializer class has basic support for reflection-based serializers. More...

#include <CeresEngine/Serialization/Serializer.hpp>

Inheritance diagram for CeresEngine::Serializer:
CeresEngine::ISerializer CeresEngine::BinarySerializer CeresEngine::JSONSerializer

Public Member Functions

 Serializer (const SerializationContext &context=SerializationContext::getDefault())
 Creates a new serializer instance.
 
 ~Serializer () noexcept override
 Destroys the serializer.
 
void serialize (const Box &value) final
 Serializes the given value into a stream of bytes written to dataStream. ISerializer::serialize
 
virtual void resetState ()
 Resets the deserializer state.
 
- Public Member Functions inherited from CeresEngine::ISerializer
virtual ~ISerializer () noexcept=default
 

Public Attributes

const SerializationContextcontext
 A shared context that contains a context for the deserializer.
 
SerializerState state
 An object that stores context for the serializer.
 

Protected Member Functions

virtual void beginObject (const SerializedObjectMetadata &metadata)=0
 Begins serialization of an object.
 
virtual void endObject ()=0
 Ends the low-level serialization of an object.
 
virtual void beginObjectProperty (const SerializedPropertyMetadata &metadata)=0
 Begins the serialization of an object property.
 
virtual void endObjectProperty ()=0
 Ends the serialization of an object property.
 
virtual void encodeObjectReference (SerializedObjectID referenceID)=0
 Encodes a object reference.
 
virtual void beginCustomObject (const SerializedCustomObjectMetadata &metadata)=0
 Begins serialization of a custom object.
 
virtual void endCustomObject ()=0
 Ends the low-level serialization of a custom object.
 
virtual void beginArray (const SerializedArrayMetadata &metadata)=0
 Begins the serialization of an array.
 
virtual void endArray ()=0
 Ends the low-level serialization of an array.
 
virtual void beginMap (const SerializedMapMetadata &metadata)=0
 Begins the serialization of a map.
 
virtual void endMap ()=0
 Ends the low-level serialization of a map.
 
virtual void encodeFloat (float value)=0
 
virtual void encodeDouble (double value)=0
 
virtual void encodeUInt8 (UInt8 value)=0
 
virtual void encodeUInt16 (UInt16 value)=0
 
virtual void encodeUInt32 (UInt32 value)=0
 
virtual void encodeUInt64 (UInt64 value)=0
 
virtual void encodeInt8 (Int8 value)=0
 
virtual void encodeInt16 (Int16 value)=0
 
virtual void encodeInt32 (Int32 value)=0
 
virtual void encodeInt64 (Int64 value)=0
 
virtual void encodeBoolean (bool value)=0
 
virtual void encodeString (StringView string)=0
 
virtual void encodeBinary (MemoryView< const Byte > data)=0
 
virtual void encodeUndefined ()=0
 Encodes an undefined value to the serialization stream.
 
virtual void encodeNull ()=0
 Encodes a null value to the serialization stream.
 

Private Member Functions

void visit (const Box &value)
 Visits the given value.
 
void visitObject (const Box &value)
 Visits the object value.
 
void visitObjectProperty (const Box &value, const ClassProperty &metaProperty)
 Visits a property of the object value.
 
void visitEnum (const Box &value)
 Visits an enum.
 
void visitArray (const Box &value)
 Visits the object as an array.
 
void visitMap (const Box &value)
 Visits the object as a map.
 
bool shouldSerializeObjectProperty (const Box &value, const ClassProperty &property) const
 

Detailed Description

The serializer class has basic support for reflection-based serializers.

It implements the more complicated logic to deal with reflection and leave only the actual wire serialization details for the implementer.

Constructor & Destructor Documentation

◆ Serializer()

CeresEngine::Serializer::Serializer ( const SerializationContext context = SerializationContext::getDefault())
explicit

Creates a new serializer instance.

◆ ~Serializer()

CeresEngine::Serializer::~Serializer ( )
overridenoexcept

Destroys the serializer.

Member Function Documentation

◆ beginArray()

virtual void CeresEngine::Serializer::beginArray ( const SerializedArrayMetadata metadata)
protectedpure virtual

Begins the serialization of an array.

Parameters
metadataAn object that describes metadata for the serialized array.

Implemented in CeresEngine::BinarySerializer, and CeresEngine::JSONSerializer.

◆ beginCustomObject()

virtual void CeresEngine::Serializer::beginCustomObject ( const SerializedCustomObjectMetadata metadata)
protectedpure virtual

Begins serialization of a custom object.

Parameters
metadataAn object that describes metadata for the serialized object.

Implemented in CeresEngine::BinarySerializer, and CeresEngine::JSONSerializer.

◆ beginMap()

virtual void CeresEngine::Serializer::beginMap ( const SerializedMapMetadata metadata)
protectedpure virtual

Begins the serialization of a map.

Parameters
metadataAn object that describes metadata for the serialized map.

Implemented in CeresEngine::BinarySerializer, and CeresEngine::JSONSerializer.

◆ beginObject()

virtual void CeresEngine::Serializer::beginObject ( const SerializedObjectMetadata metadata)
protectedpure virtual

Begins serialization of an object.

Parameters
metadataAn object that describes metadata for the serialized object.

Implemented in CeresEngine::BinarySerializer, and CeresEngine::JSONSerializer.

◆ beginObjectProperty()

virtual void CeresEngine::Serializer::beginObjectProperty ( const SerializedPropertyMetadata metadata)
protectedpure virtual

Begins the serialization of an object property.

Parameters
metadataAn object that describes metadata for the serialized object property.

Implemented in CeresEngine::BinarySerializer, and CeresEngine::JSONSerializer.

◆ encodeBinary()

virtual void CeresEngine::Serializer::encodeBinary ( MemoryView< const Byte data)
protectedpure virtual

◆ encodeBoolean()

virtual void CeresEngine::Serializer::encodeBoolean ( bool  value)
protectedpure virtual

◆ encodeDouble()

virtual void CeresEngine::Serializer::encodeDouble ( double  value)
protectedpure virtual

◆ encodeFloat()

virtual void CeresEngine::Serializer::encodeFloat ( float  value)
protectedpure virtual

◆ encodeInt16()

virtual void CeresEngine::Serializer::encodeInt16 ( Int16  value)
protectedpure virtual

◆ encodeInt32()

virtual void CeresEngine::Serializer::encodeInt32 ( Int32  value)
protectedpure virtual

◆ encodeInt64()

virtual void CeresEngine::Serializer::encodeInt64 ( Int64  value)
protectedpure virtual

◆ encodeInt8()

virtual void CeresEngine::Serializer::encodeInt8 ( Int8  value)
protectedpure virtual

◆ encodeNull()

virtual void CeresEngine::Serializer::encodeNull ( )
protectedpure virtual

Encodes a null value to the serialization stream.

Implemented in CeresEngine::BinarySerializer, and CeresEngine::JSONSerializer.

◆ encodeObjectReference()

virtual void CeresEngine::Serializer::encodeObjectReference ( SerializedObjectID  referenceID)
protectedpure virtual

Encodes a object reference.

Implemented in CeresEngine::BinarySerializer, and CeresEngine::JSONSerializer.

◆ encodeString()

virtual void CeresEngine::Serializer::encodeString ( StringView  string)
protectedpure virtual

◆ encodeUInt16()

virtual void CeresEngine::Serializer::encodeUInt16 ( UInt16  value)
protectedpure virtual

◆ encodeUInt32()

virtual void CeresEngine::Serializer::encodeUInt32 ( UInt32  value)
protectedpure virtual

◆ encodeUInt64()

virtual void CeresEngine::Serializer::encodeUInt64 ( UInt64  value)
protectedpure virtual

◆ encodeUInt8()

virtual void CeresEngine::Serializer::encodeUInt8 ( UInt8  value)
protectedpure virtual

◆ encodeUndefined()

virtual void CeresEngine::Serializer::encodeUndefined ( )
protectedpure virtual

Encodes an undefined value to the serialization stream.

Implemented in CeresEngine::BinarySerializer, and CeresEngine::JSONSerializer.

◆ endArray()

virtual void CeresEngine::Serializer::endArray ( )
protectedpure virtual

Ends the low-level serialization of an array.

Implemented in CeresEngine::BinarySerializer, and CeresEngine::JSONSerializer.

◆ endCustomObject()

virtual void CeresEngine::Serializer::endCustomObject ( )
protectedpure virtual

Ends the low-level serialization of a custom object.

Implemented in CeresEngine::BinarySerializer, and CeresEngine::JSONSerializer.

◆ endMap()

virtual void CeresEngine::Serializer::endMap ( )
protectedpure virtual

Ends the low-level serialization of a map.

Implemented in CeresEngine::BinarySerializer, and CeresEngine::JSONSerializer.

◆ endObject()

virtual void CeresEngine::Serializer::endObject ( )
protectedpure virtual

Ends the low-level serialization of an object.

Implemented in CeresEngine::BinarySerializer, and CeresEngine::JSONSerializer.

◆ endObjectProperty()

virtual void CeresEngine::Serializer::endObjectProperty ( )
protectedpure virtual

Ends the serialization of an object property.

Implemented in CeresEngine::BinarySerializer, and CeresEngine::JSONSerializer.

◆ resetState()

virtual void CeresEngine::Serializer::resetState ( )
virtual

Resets the deserializer state.

◆ serialize()

void CeresEngine::Serializer::serialize ( const Box value)
finalvirtual

Serializes the given value into a stream of bytes written to dataStream. ISerializer::serialize

The layout, format and details on how the object is serialized is open for the serializer implementation to decide.

Parameters
valueThe value to be written to the data stream. ISerializer::serialize

Implements CeresEngine::ISerializer.

◆ shouldSerializeObjectProperty()

bool CeresEngine::Serializer::shouldSerializeObjectProperty ( const Box value,
const ClassProperty property 
) const
private

◆ visit()

void CeresEngine::Serializer::visit ( const Box value)
private

Visits the given value.

Recurse into all serializable object properties.

◆ visitArray()

void CeresEngine::Serializer::visitArray ( const Box value)
private

Visits the object as an array.

◆ visitEnum()

void CeresEngine::Serializer::visitEnum ( const Box value)
private

Visits an enum.

◆ visitMap()

void CeresEngine::Serializer::visitMap ( const Box value)
private

Visits the object as a map.

◆ visitObject()

void CeresEngine::Serializer::visitObject ( const Box value)
private

Visits the object value.

◆ visitObjectProperty()

void CeresEngine::Serializer::visitObjectProperty ( const Box value,
const ClassProperty metaProperty 
)
private

Visits a property of the object value.

Member Data Documentation

◆ context

const SerializationContext& CeresEngine::Serializer::context

A shared context that contains a context for the deserializer.

◆ state

SerializerState CeresEngine::Serializer::state

An object that stores context for the serializer.


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