mirror of
https://github.com/scp-fs2open/fs2open.github.com.git
synced 2026-11-07 22:56:30 -10:00
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.
32 lines
613 B
C++
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
|