59 lines
1.7 KiB
C++
59 lines
1.7 KiB
C++
///////////////////////////////////////////////////////////////////////////////
|
|
// This source file is part of the LuaPlus source distribution and is Copyright
|
|
// 2001-2011 by Joshua C. Jensen (jjensen@workspacewhiz.com).
|
|
//
|
|
// The latest version may be obtained from http://luaplus.org/.
|
|
//
|
|
// The code presented in this file may be used in any environment it is
|
|
// acceptable to use Lua.
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
#ifndef LUAPLUS__LUAAUTOBLOCK_H
|
|
#define LUAPLUS__LUAAUTOBLOCK_H
|
|
|
|
#include "LuaPlusInternal.h"
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
// namespace LuaPlus
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
namespace LuaPlus {
|
|
|
|
///////////////////////////////////////////////////////////////////////////
|
|
///////////////////////////////////////////////////////////////////////////
|
|
///////////////////////////////////////////////////////////////////////////
|
|
/**
|
|
A helper class for automatically setting the stack state back to point of
|
|
LuaAutoBlock creation.
|
|
**/
|
|
class LuaAutoBlock {
|
|
public:
|
|
LuaAutoBlock(LuaState* state)
|
|
: L(LuaState_to_lua_State(state))
|
|
, stackTop(lua_gettop(L)) {
|
|
}
|
|
|
|
LuaAutoBlock(lua_State* L_)
|
|
: L(L_)
|
|
, stackTop(lua_gettop(L)) {
|
|
}
|
|
|
|
LuaAutoBlock(LuaStackObject& object)
|
|
: L(object.GetCState())
|
|
, stackTop(lua_gettop(L)) {
|
|
}
|
|
|
|
~LuaAutoBlock() {
|
|
lua_settop(L, stackTop);
|
|
}
|
|
|
|
private:
|
|
LuaAutoBlock(const LuaAutoBlock& src); // Not implemented
|
|
const LuaAutoBlock& operator=(const LuaAutoBlock& src); // Not implemented
|
|
|
|
lua_State* L;
|
|
int stackTop;
|
|
};
|
|
|
|
} // namespace LuaPlus
|
|
|
|
#endif // LUAPLUS__LUAAUTOBLOCK_H
|