From 98c9825c49a1674f59eafb3253829ca7d5cac3c1 Mon Sep 17 00:00:00 2001 From: chai Date: Mon, 14 Jan 2019 16:40:14 +0800 Subject: *rename source file --- src/libjin-lua/common/l_reference.cpp | 42 +++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 src/libjin-lua/common/l_reference.cpp (limited to 'src/libjin-lua/common/l_reference.cpp') diff --git a/src/libjin-lua/common/l_reference.cpp b/src/libjin-lua/common/l_reference.cpp new file mode 100644 index 0000000..2fcf792 --- /dev/null +++ b/src/libjin-lua/common/l_reference.cpp @@ -0,0 +1,42 @@ +#include "common/je_lua.h" + +#include "l_reference.h" + +namespace JinEngine +{ + namespace Lua + { + + LuaRef::LuaRef(lua_State* L, int i) + : mL(L) + { + // Get value. + luax_pushvalue(mL, i); + // Set reference. + luax_getreferencestable(L); + luax_pushvalue(mL, -2); + mIndex = luax_ref(mL, -2); + luax_pop(L, 3); + } + + LuaRef::~LuaRef() + { + unref(); + } + + void LuaRef::unref() + { + luax_getreferencestable(mL); + luax_unref(mL, -1, mIndex); + luax_pop(mL, 1); + } + + void LuaRef::push() + { + luax_getreferencestable(mL); + luax_rawgeti(mL, -1, mIndex); + luax_remove(mL, -2); + } + + } +} \ No newline at end of file -- cgit v1.1-26-g67d0