Pioneer
LuaSerializer.h
Go to the documentation of this file.
1 // Copyright © 2008-2021 Pioneer Developers. See AUTHORS.txt for details
2 // Licensed under the terms of the GPL v3. See licenses/GPL-3.txt
3 
4 #ifndef _LUASERIALIZER_H
5 #define _LUASERIALIZER_H
6 
7 #include "DeleteEmitter.h"
8 #include "LuaManager.h"
9 #include "LuaObject.h"
10 #include "LuaRef.h"
11 
12 class LuaSerializer : public DeleteEmitter {
13  friend class LuaObject<LuaSerializer>;
14  friend void LuaRef::SaveToJson(Json &jsonObj);
15  friend void LuaRef::LoadFromJson(const Json &jsonObj);
16 
17 public:
18  void ToJson(Json &jsonObj);
19  void FromJson(const Json &jsonObj);
20 
21  void InitTableRefs();
22  void UninitTableRefs();
23 
24 private:
25  static int l_register(lua_State *l);
26  static int l_register_class(lua_State *l);
27 
28  static void pickle(lua_State *l, int idx, std::string &out, std::string key = "");
29  static const char *unpickle(lua_State *l, const char *pos);
30 
31  static void pickle_json(lua_State *l, int idx, Json &out, const std::string &key = "");
32  static void unpickle_json(lua_State *l, const Json &value);
33 };
34 
35 #endif
nlohmann::json Json
Definition: Json.h:8
Definition: DeleteEmitter.h:16
Definition: LuaObject.h:206
void SaveToJson(Json &jsonObj)
Definition: LuaRef.cpp:104
void LoadFromJson(const Json &jsonObj)
Definition: LuaRef.cpp:128
Definition: LuaSerializer.h:12
void UninitTableRefs()
Definition: LuaSerializer.cpp:608
void InitTableRefs()
Definition: LuaSerializer.cpp:594
void ToJson(Json &jsonObj)
Definition: LuaSerializer.cpp:622
void FromJson(const Json &jsonObj)
Definition: LuaSerializer.cpp:662