diff options
author | Jude Melton-Houghton <jwmhjwmh@gmail.com> | 2022-09-26 17:03:43 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-09-26 17:03:43 -0400 |
commit | f4a01f3a5dc0d8fe2f4f6d804d790da91d1bc30c (patch) | |
tree | 089ddc309e22ae8549ec3b86765ee272f57a33df /src/script/lua_api/l_storage.h | |
parent | 03428d9825cfdf2cfaed6ac9410dafccac0d4f3a (diff) | |
download | minetest-f4a01f3a5dc0d8fe2f4f6d804d790da91d1bc30c.tar.xz |
Avoid duplication of mod metadata in memory (#12562)
Co-authored-by: sfan5 <sfan5@live.de>
Diffstat (limited to 'src/script/lua_api/l_storage.h')
-rw-r--r-- | src/script/lua_api/l_storage.h | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/src/script/lua_api/l_storage.h b/src/script/lua_api/l_storage.h index bfcf5ef38..ddf078aa8 100644 --- a/src/script/lua_api/l_storage.h +++ b/src/script/lua_api/l_storage.h @@ -22,8 +22,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "l_metadata.h" #include "lua_api/l_base.h" - -class ModMetadata; +#include "content/mods.h" class ModApiStorage : public ModApiBase { @@ -37,24 +36,23 @@ public: class StorageRef : public MetaDataRef { private: - ModMetadata *m_object = nullptr; + ModMetadata m_object; static const char className[]; static const luaL_Reg methods[]; - virtual Metadata *getmeta(bool auto_create); + virtual IMetadata *getmeta(bool auto_create); virtual void clearMeta(); // garbage collector static int gc_object(lua_State *L); public: - StorageRef(ModMetadata *object); - ~StorageRef(); + StorageRef(const std::string &mod_name, ModMetadataDatabase *db): m_object(mod_name, db) {} + ~StorageRef() = default; static void Register(lua_State *L); - static void create(lua_State *L, ModMetadata *object); + static void create(lua_State *L, const std::string &mod_name, ModMetadataDatabase *db); static StorageRef *checkobject(lua_State *L, int narg); - static ModMetadata *getobject(StorageRef *ref); }; |