1#ifndef _SERIALIZABLE_H_
2#define _SERIALIZABLE_H_
7#include <unordered_map>
10#include <nlohmann/json.hpp>
11#include <yaml-cpp/yaml.h>
38 virtual void Write(
const std::string& key,
const std::any& value) = 0;
39 virtual std::any
Read(
const std::string& key)
const = 0;
59 virtual void Serialize(std::unique_ptr<ISerializationContext> context)
const = 0;
65 virtual void Deserialize(std::unique_ptr<ISerializationContext> context) = 0;
Interface for serialization contexts.
virtual void WriteToStream(std::ostream &stream) const =0
virtual ~ISerializationContext()=default
virtual void Write(const std::string &key, const std::any &value)=0
virtual std::any Read(const std::string &key) const =0
virtual void ReadFromStream(std::istream &stream)=0
Base class for objects that can be serialized and deserialized.
void DeserializeFromFile(const std::string &filePath)
Deserializes the object from a file.
virtual ~Serializable()=default
void SerializeToFile(const std::string &filePath) const
Serializes the object to a file.
virtual void Serialize(std::unique_ptr< ISerializationContext > context) const =0
Serializes the object using the specified context.
virtual void Deserialize(std::unique_ptr< ISerializationContext > context)=0
Deserializes the object using the specified context.
Detects file format and creates the appropriate serialization context.
static std::unique_ptr< ISerializationContext > CreateContext(SerializationFormat format)
Builds the context implementation matching format.
static SerializationFormat DetectFormat(const std::string &filePath)
Picks a format from filePath's extension (.bin/.json/.yaml/.yml).
Root namespace for everything the engine exposes.