Lua Utils
Biblioteca utilitária para facilitar a integração de Lua com C++
luaStackBalancer.h
Go to the documentation of this file.
1 /************************************************************************
2 **
3 ** Copyright (C) 2009 K2FS Sistemas e Projetos Ltd.
4 ** All rights reserved.
5 **
6 ************************************************************************/
7 
18 #ifndef _LUASTACKBALANCER_H_
19 #define _LUASTACKBALANCER_H_
20 
21 #include <assert.h>
22 
23 #include <lua.hpp>
24 #include "luaEnv.h"
25 
26 // Macros auxiliares para verificação de balanceamento de pilha
27 #if defined QT_NO_DEBUG
28 
29 #define LUA_SAVE_TOP(ENV) ((void)0)
30 #define LUA_CHECK_TOP(ENV) ((void)0)
31 #define LUA_CHECK_TOP_O(ENV, o) ((void)0)
32 
33 #define LUA_SAVE_TOPL(L) ((void)0)
34 #define LUA_CHECK_TOPL(L) ((void)0)
35 #define LUA_CHECK_TOPL_O(L, o) ((void)0)
36 
37 #else
38 
40 #define LUA_SAVE_TOP(ENV) int _lua_save_top = (ENV).top()
41 
43 #define LUA_CHECK_TOP(ENV) assert((ENV).top() == _lua_save_top)
44 
46 #define LUA_CHECK_TOP_O(ENV, o) assert((ENV).top() == _lua_save_top + o)
47 
48 
50 #define LUA_SAVE_TOPL(L) int _lua_save_top = lua_gettop(L)
51 
53 #define LUA_CHECK_TOPL(L) assert(lua_gettop(L) == _lua_save_top)
54 
56 #define LUA_CHECK_TOPL_O(L, o) assert(lua_gettop(L) == _lua_save_top + o)
57 
58 #endif
59 
60 
71 class LUAUTILS_API_EXPORT LuaStackBalancer
72 {
73 public:
76  {
77  _lua = lua;
78  if(lua)
79  _top = lua->top();
80  }
81 
84  {
85  if(_lua)
86  {
87  assert(_lua->top() >= _top);
88  _lua->setTop(_top);
89  }
90  }
91 
92 private:
94  int _top;
95 };
96 
97 
98 #endif
99 
LuaEnv * _lua
Ambiente Lua.
Definition: luaStackBalancer.h:93
~LuaStackBalancer()
Destrutor. Remove itens a mais na pilha.
Definition: luaStackBalancer.h:83
Definicao das classes LuaEnv e AutoLuaEnv.
Classe para interface com ambientes Lua.
Definition: luaEnv.h:34
Classe auxiliar que garante o balanceamento da pilha de Lua.
Definition: luaStackBalancer.h:71
int _top
Topo da pilha no momento da construção do objeto.
Definition: luaStackBalancer.h:94
int top()
Retorna índice do elemento no topo da pilha.
Definition: luaEnv.h:145
LuaStackBalancer(LuaEnv *lua)
Construtor. Registra estado atual da pilha se lua != NULL.
Definition: luaStackBalancer.h:75