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

24 lines
525 B
C++

#pragma once
#include "libs/jansson.h"
#include "scripting/lua/LuaTable.h"
#include "scripting/lua/LuaValue.h"
namespace scripting {
namespace util {
class LuaValueDeserializer {
public:
LuaValueDeserializer(lua_State* L);
luacpp::LuaValue deserialize(const SCP_vector<uint8_t>& serialized) const;
private:
luacpp::LuaValue deserializePlainJson(const uint8_t* data, size_t size) const;
luacpp::LuaValue jsonToValue(json_t* json) const;
lua_State* m_L = nullptr;
};
} // namespace util
} // namespace scripting