Serializable

Serialization utilities.

Overview

Typical use cases:

  • Serializing and deserializing objects to/from binary streams

  • Reflecting object fields for custom processing

Header

<RaeptorCogs/Serializable.hpp>

Metadata

Author

Estorc

Version

v1.0

Copyright

Copyright (c) 2025 Estorc MIT License.

Enums

Enumerations

Enum

Description

RaeptorCogs::SerializationFlag

Serialization flags.

RaeptorCogs::VisitorMode

Visitor mode enumeration.

enum class RaeptorCogs::SerializationFlag : uint8_t

Serialization flags.

Defines flags for serialization options.

Values:

enumerator NONE

No serialization flags set.

enumerator COMPRESS

Enable compression for serialized data.

enum class RaeptorCogs::VisitorMode : uint8_t

Visitor mode enumeration.

Defines the mode of operation for the visitor (serialization or deserialization).

Values:

enumerator SERIALIZE

Serialization mode.

enumerator DESERIALIZE

Deserialization mode.

Classes

Classes

Class

Description

RaeptorCogs::Serializable

Serializable interface.

RaeptorCogs::Visitor

Visitor interface.

class Serializable

Serializable interface.

Provides a contract for serializable objects.

Public Functions

virtual ~Serializable() = default

Virtual destructor.

virtual void reflect(Visitor &v) = 0

Reflect method to be implemented by derived classes.

Parameters:

vVisitor to operate on the fields.

std::vector<uint8_t> dump(SerializationFlag flags = SerializationFlag::NONE)

Dump the object to an output stream.

Parameters:

flags – Serialization flags to control the dumping process.

Returns:

Vector of bytes representing the serialized object.

void load(std::vector<uint8_t> data, SerializationFlag flags = SerializationFlag::NONE)

Load the object from an input stream.

Parameters:
  • data – Vector of bytes representing the serialized object.

  • flags – Serialization flags to control the loading process.

class Visitor

Visitor interface.

Defines the interface for visitors that can operate on different field types.

Public Functions

template<typename T>
inline std::enable_if_t<std::is_base_of_v<Serializable, T>> visit(T &obj)

Visit a Serializable object field.

template<typename T>
inline std::enable_if_t<!std::is_base_of_v<Serializable, T>> visit(T &v)

Visit a generic field.

template<typename T>
inline void read(T &v)

Read a value from the stream.

inline void read(std::string &str)

Read a string from the stream.

template<typename T>
inline void read(std::vector<T> &vec)

Read a vector from the stream.

template<typename T>
inline void write(T &v)

Write a value to the stream.

inline void write(std::string &str)

Write a string to the stream.

template<typename T>
inline void write(std::vector<T> &vec)

Write a vector to the stream.

inline Visitor(std::iostream &stream, VisitorMode mode)

Constructor.

Parameters:
  • stream – Stream to read from or write to.

  • mode – Mode of the visitor (serialize or deserialize).

~Visitor() = default

Destructor.

Private Members

std::iostream &stream

Stream variant for input/output operations.

VisitorMode mode

Current mode of the visitor (serialize or deserialize).