mirror of https://github.com/SeanOMik/libki.git
33 lines
836 B
C++
33 lines
836 B
C++
#pragma once
|
|
#include <memory>
|
|
#include "ki/pclass/TypeSystem.h"
|
|
#include "ki/serialization/BinarySerializer.h"
|
|
|
|
namespace ki
|
|
{
|
|
namespace serialization
|
|
{
|
|
/**
|
|
* TODO: Documentation
|
|
*/
|
|
class FileSerializer
|
|
{
|
|
static constexpr const char *BINARY_HEADER = "BINd";
|
|
static constexpr const char *JSON_HEADER = "JSON";
|
|
|
|
public:
|
|
explicit FileSerializer(pclass::TypeSystem &type_system);
|
|
|
|
void save_binary(pclass::PropertyClass *object,
|
|
BinarySerializer::flags flags, const std::string &filepath) const;
|
|
void save_xml(pclass::PropertyClass *object, const std::string &filepath) const;
|
|
void save_json(pclass::PropertyClass *object, const std::string &filepath) const;
|
|
|
|
void load(std::unique_ptr<pclass::PropertyClass> &dest, const std::string &filepath) const;
|
|
|
|
private:
|
|
const pclass::TypeSystem *m_type_system;
|
|
};
|
|
}
|
|
}
|