Pioneer
LuaSerializer.h
Go to the documentation of this file.
1 // Copyright © 2008-2023 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 Space;
13 
14 class LuaSerializer : public DeleteEmitter {
15  friend class LuaObjectBase;
16  friend class LuaObject<LuaSerializer>;
17  friend void LuaRef::SaveToJson(Json &jsonObj);
18  friend void LuaRef::LoadFromJson(const Json &jsonObj);
19 
20 public:
21  void ToJson(Json &jsonObj);
22  void FromJson(const Json &jsonObj);
23 
24  void SaveComponents(Json &jsonObj, Space *space);
25  void LoadComponents(const Json &jsonObj, Space *space);
26 
27  void InitTableRefs();
28  void UninitTableRefs();
29 
30 private:
31  static int l_register(lua_State *l);
32  static int l_register_class(lua_State *l);
33 
34  static void pickle_json(lua_State *l, int idx, Json &out, const std::string &key = "");
35  static void unpickle_json(lua_State *l, const Json &value);
36 };
37 
38 #endif
nlohmann::json Json
Definition: Json.h:8
Definition: DeleteEmitter.h:16
Definition: LuaObject.h:107
Definition: LuaObject.h:235
void SaveToJson(Json &jsonObj)
Definition: LuaRef.cpp:97
void LoadFromJson(const Json &jsonObj)
Definition: LuaRef.cpp:121
Definition: LuaSerializer.h:14
void SaveComponents(Json &jsonObj, Space *space)
Definition: LuaSerializer.cpp:454
void UninitTableRefs()
Definition: LuaSerializer.cpp:350
void InitTableRefs()
Definition: LuaSerializer.cpp:336
void LoadComponents(const Json &jsonObj, Space *space)
Definition: LuaSerializer.cpp:477
void ToJson(Json &jsonObj)
Definition: LuaSerializer.cpp:364
void FromJson(const Json &jsonObj)
Definition: LuaSerializer.cpp:404
Definition: Space.h:19