23 #ifndef LUABIND_HANDLE_050420_HPP 24 #define LUABIND_HANDLE_050420_HPP 26 #include <luabind/lua_include.hpp> 27 #include <luabind/value_wrapper.hpp> 49 void replace(
lua_State* interpreter,
int stack_index);
56 inline handle::handle()
62 : m_interpreter(other.m_interpreter)
65 if (m_interpreter == 0)
return;
66 lua_rawgeti(m_interpreter, LUA_REGISTRYINDEX, other.m_index);
67 m_index = luaL_ref(m_interpreter, LUA_REGISTRYINDEX);
70 inline handle::handle(
lua_State* interpreter,
int stack_index)
71 : m_interpreter(interpreter)
74 lua_pushvalue(interpreter, stack_index);
75 m_index = luaL_ref(interpreter, LUA_REGISTRYINDEX);
82 lua_pushvalue(interpreter, stack_index);
83 m_index = luaL_ref(interpreter, LUA_REGISTRYINDEX);
86 inline handle::~handle()
88 if (m_interpreter && m_index != LUA_NOREF)
89 luaL_unref(m_interpreter, LUA_REGISTRYINDEX, m_index);
98 inline void handle::swap(
handle& other)
100 std::swap(m_interpreter, other.m_interpreter);
101 std::swap(m_index, other.m_index);
104 inline void handle::push(
lua_State* interpreter)
const 106 lua_rawgeti(interpreter, LUA_REGISTRYINDEX, m_index);
109 inline lua_State* handle::interpreter()
const 111 return m_interpreter;
114 inline void handle::replace(
lua_State* interpreter,
int stack_index)
116 lua_pushvalue(interpreter, stack_index);
117 lua_rawseti(interpreter, LUA_REGISTRYINDEX, m_index);
123 typedef boost::mpl::true_ is_specialized;
127 return value.interpreter();
132 value.push(interpreter);
135 static bool check(...)
143 #endif // LUABIND_HANDLE_050420_HPP Definition: handle.hpp:33
Definition: minilua.c:461
Definition: PEtypes.h:507
Definition: enum_maker.hpp:46
Definition: value_wrapper.hpp:77