1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-06-23 00:28:08 +02:00
Files
.github
AI
CI
Mods
android
client
clientapp
cmake_modules
config
debian
docs
include
ios
launcher
lib
lobby
mapeditor
osx
rpm
scripting
erm
lua
api
CMakeLists.txt
LuaCallWrapper.h
LuaFunctor.h
LuaReference.cpp
LuaReference.h
LuaScriptModule.cpp
LuaScriptModule.h
LuaScriptingContext.cpp
LuaScriptingContext.h
LuaSpellEffect.cpp
LuaSpellEffect.h
LuaStack.cpp
LuaStack.h
LuaWrapper.h
StdInc.cpp
StdInc.h
scripts
server
serverapp
test
vcmiqt
win
xcode
.gitattributes
.gitignore
.gitmodules
.travis.yml
AUTHORS.h
CCallback.cpp
CCallback.h
CMakeLists.txt
CMakePresets.json
ChangeLog.md
Global.h
Version.cpp.in
Version.h
conanfile.py
fuzzylite.pc.in
license.txt
vcmibuilder
vcmi/scripting/lua/LuaReference.cpp

49 lines
783 B
C++
Raw Normal View History

/*
* 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"
2022-08-15 14:38:17 +03:00
VCMI_LIB_NAMESPACE_BEGIN
namespace scripting
{
LuaReference::LuaReference(lua_State * L)
: l(L),
doCleanup(true)
{
key = luaL_ref(l, LUA_REGISTRYINDEX);
}
2023-02-05 19:24:34 +03:00
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);
}
}
2022-08-15 14:38:17 +03:00
VCMI_LIB_NAMESPACE_END