Lua Utils
Biblioteca utilitária para facilitar a integração de Lua com C++
Loading...
Searching...
No Matches
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
71class LUAUTILS_API_EXPORT LuaStackBalancer
72{
73public:
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
92private:
94 int _top;
95};
96
97
98#endif
99
Classe para interface com ambientes Lua.
Definition luaEnv.h:35
int top()
Retorna índice do elemento no topo da pilha.
Definition luaEnv.h:145
Classe auxiliar que garante o balanceamento da pilha de Lua.
Definition luaStackBalancer.h:72
~LuaStackBalancer()
Destrutor. Remove itens a mais na pilha.
Definition luaStackBalancer.h:83
int _top
Topo da pilha no momento da construção do objeto.
Definition luaStackBalancer.h:94
LuaStackBalancer(LuaEnv *lua)
Construtor. Registra estado atual da pilha se lua != NULL.
Definition luaStackBalancer.h:75
LuaEnv * _lua
Ambiente Lua.
Definition luaStackBalancer.h:93
Definicao das classes LuaEnv e AutoLuaEnv.