Files
asarium cf4fe8accc Add Lua API for serializing values
This can be used by script code for reliably storing Lua values without
having to build a custom serialization format.

The C++ code can also be used by other code modules that want to
serialize data. The new classes simply return a byte array with an
unspecified format.

At the moment this uses a plain JSON encoding but could be extended in
the future to include either compression or BSON encoding if necessary.
The format is future compatible by using a simple header to identify
different kinds of formats.
2020-09-12 14:28:16 +02:00

32 lines
613 B
C++

#pragma once
#include "scripting/lua/LuaValue.h"
#include "scripting/lua/LuaTable.h"
#include "libs/jansson.h"
namespace scripting {
namespace util {
enum class SerializationType : uint8_t {
PlainJson = 0,
};
class LuaValueSerializer {
public:
LuaValueSerializer(luacpp::LuaValue value);
SCP_vector<uint8_t> serialize() const;
private:
json_t* toJson() const;
json_t* tableToJson() const;
static json_t* tableToJsonArray(const luacpp::LuaTable& table);
static json_t* tableToJsonObject(const luacpp::LuaTable& table);
luacpp::LuaValue m_value;
};
} // namespace util
} // namespace scripting