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.
24 lines
525 B
C++
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
|