123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- /*
- * LuaReference.cpp, part of VCMI engine
- *
- * Authors: listed in file AUTHORS in main folder
- *
- * License: GNU General Public License v2.0 or later
- * Full text of license available in license.txt file, in main folder
- *
- */
- #include "StdInc.h"
- #include "LuaReference.h"
- VCMI_LIB_NAMESPACE_BEGIN
- namespace scripting
- {
- LuaReference::LuaReference(lua_State * L)
- : l(L),
- doCleanup(true)
- {
- key = luaL_ref(l, LUA_REGISTRYINDEX);
- }
- LuaReference::LuaReference(LuaReference && other) noexcept
- : l(other.l),
- key(other.key),
- doCleanup(false)
- {
- std::swap(doCleanup, other.doCleanup);
- }
- LuaReference::~LuaReference()
- {
- if(doCleanup)
- luaL_unref(l, LUA_REGISTRYINDEX, key);
- }
- void LuaReference::push()
- {
- lua_rawgeti(l, LUA_REGISTRYINDEX, key);
- }
- }
- VCMI_LIB_NAMESPACE_END
|