27 #include <QStringList> 30 #define luaPrintable(string) QString(string).toLatin1().constData() 64 typedef void (*RedirectedOutputCb)(
void* context,
QString str);
74 LuaEnv() : _l(NULL), _outputCb(NULL), _outputContext(NULL), _envTableRef(LUA_NOREF),
75 _dofileScriptNameFilter(NULL), _dofileScriptNameContext(NULL) {}
78 LuaEnv(lua_State* state) : _l(state), _outputCb(NULL), _outputContext(NULL), _envTableRef(LUA_NOREF),
79 _dofileScriptNameFilter(NULL), _dofileScriptNameContext(NULL) {}
84 bool newState(
int libOptions = LIB_ALL);
90 void setState(lua_State* state) { _l = state; }
93 lua_State*
state() {
return _l; }
96 operator lua_State* () {
return _l; }
98 void redirectOutput(RedirectedOutputCb cb,
void* context);
99 void replaceDofile(
QString table =
"", ScriptNameFilterCb scriptNameFilter = NULL,
void* scriptNameFilterContext = NULL);
124 void registerFunctions(
const FunctionRegister* reg,
const char* table = NULL);
125 void registerFunction (
const char* globalName, lua_CFunction func,
void* userdata_1 = NULL,
void* userdata_2 = NULL);
127 QVariant getGlobal(
const char* name, StackOption opt = STACK_AUTO);
132 void setGlobal(
const char* name,
const QVariant& val);
137 QVariant toVariant(StackOption opt,
int index = -1);
139 void pushVariant(
const QVariant& val);
142 void pop(
int num = 1) { assert(_l); lua_pop(_l, num); }
145 int top() { assert(_l);
return lua_gettop(_l); }
148 void setTop(
int index) { assert(_l); lua_settop(_l, index); }
150 QVariant getLocal(
const char* name, StackOption opt = STACK_AUTO);
155 static bool isIdentifier(
QString str);
164 #ifdef LUAI_EXTRASPACE 167 template <
class T> T* extraSpace()
const {
return extraSpace<T>(_l); }
170 template <
class T>
static T* extraSpace(lua_State* state)
172 assert(
sizeof(T) <= LUAI_EXTRASPACE);
173 return (T*)((
char*)state - LUAI_EXTRASPACE);
180 #ifdef LUAUTILS_CANCEL 181 static_assert(2 *
sizeof(quint32) <= LUAI_EXTRASPACE,
"Invalid extra space size to enable cancelation support");
184 bool cancelRequested()
const {
return cancelRequested(_l); }
187 void setCancelFlag(
bool cancel) { setCancelFlag(_l, cancel); }
193 void disableCancelation(
bool mode) { disableCancelation(_l, mode); }
196 static bool cancelRequested(lua_State* state) { quint32* p = extraSpace<quint32>(state);
return p[0] && !p[1]; }
199 static void setCancelFlag(lua_State* state,
bool cancel) { extraSpace<quint32>(state)[0] = cancel; }
205 static void disableCancelation(lua_State* state,
bool mode) { extraSpace<quint32>(state)[1] = mode; }
209 static QVariant& clearReferences(
QVariant& obj,
bool useLists,
bool firstLevelIsMap,
bool allowFunctions);
214 void initState(
int libOptions);
218 static int printCb(lua_State* L);
219 static int dofile (lua_State* L);
250 throw std::bad_alloc();
void setDofileTable(QString table)
Updates the table where dofile functions should be executed.
Definition: luaEnv.h:102
void setLoadTableEnv(int tableRef=LUA_NOREF)
Cadastra referência para uma tabela que será utilizada como ambiente global pelas diversas funções de...
Definition: luaEnv.h:122
LibraryOptions
Opçoes de bibliotecas a serem carregadas na inicialização do estado.
Definition: luaEnv.h:47
void * _dofileScriptNameContext
A user context passed as parameter to _dofileScriptNameFilter.
Definition: luaEnv.h:228
void setTop(int index)
Altera topo da pilha para o indice recebido como parâmetro.
Definition: luaEnv.h:148
lua_State * state()
Retorna o estado Lua armazenado.
Definition: luaEnv.h:93
luaL_Reg FunctionRegister
Tipo para tabela de funções a serem registradas no ambiente.
Definition: luaEnv.h:61
lua_State * _l
Lua state associado com este objeto.
Definition: luaEnv.h:221
~AutoLuaEnv()
Destrutor. Fecha o ambiente lua.
Definition: luaEnv.h:254
QVariant getGlobal(QString name, StackOption opt=STACK_AUTO)
Método sobrecarregado recebendo um QString.
Definition: luaEnv.h:130
RedirectedOutputCb _outputCb
Callback usada para redirecionamento de mensganes de output.
Definition: luaEnv.h:223
LuaEnv(lua_State *state)
Construtor. Cria um LuaEnv a partir de um ambiente Lua pré-existente.
Definition: luaEnv.h:78
const QStringList & rsrcPath() const
Retorna lista de paths considerados para carga de resurces por runRsrcScript()
Definition: luaEnv.h:107
void pop(int num=1)
Remove num elementos da pilha.
Definition: luaEnv.h:142
QVariant getLocal(QString name, StackOption opt=STACK_AUTO)
Método sobrecarregado recebendo um QString.
Definition: luaEnv.h:153
void setGlobal(QString name, const QVariant &val)
Método sobrecarregado recebendo um QString.
Definition: luaEnv.h:135
AutoLuaEnv(int libOptions=LIB_ALL)
Construtor. Cria um novo ambiente lua que será destruído junto com o objeto.
Definition: luaEnv.h:247
LuaEnv()
Construtor padrão. Cria objeto com ambiente Lua vazio.
Definition: luaEnv.h:74
~LuaEnv()
Destrutor. Ambiente Lua NÃO é fechado automaticamente.
Definition: luaEnv.h:82
Classe para interface com ambientes Lua.
Definition: luaEnv.h:34
void setState(lua_State *state)
Altera o ambiente Lua armazenado. Ambiente anterior, se existente, NÃO é fechado.
Definition: luaEnv.h:90
Indica que o valor não deve ser removido da pilha.
Definition: luaEnv.h:42
Declaration of usefull configuration definitions and some compatibility options fro compiling with se...
int _envTableRef
Referência para tabela usada como ambiente global na carga de scripts setada por setLoadTableEnv()
Definition: luaEnv.h:229
bool newState(int libOptions=LIB_ALL)
Cria um novo ambiente lua e o inicializa com as funções das bibliotecas especificadas Se a biblioteca...
Definition: luaEnv.cpp:56
void * _outputContext
Contexto passado para a callback.
Definition: luaEnv.h:224
QStringList _rsrcPathList
Lista de paths base usados para leitura de resources.
Definition: luaEnv.h:225
StackOption
Opções de manipulação de pilha.
Definition: luaEnv.h:39
Indica que o valor deve ser removido da pilha.
Definition: luaEnv.h:41
QString _dofileTable
Nome da tabela de ambiente para operações de dofile se este foi substituido por replaceDofile()
Definition: luaEnv.h:226
int top()
Retorna índice do elemento no topo da pilha.
Definition: luaEnv.h:145
void closeState()
Fecha o estado Lua.
Definition: luaEnv.cpp:74
ScriptNameFilterCb _dofileScriptNameFilter
The filter function for script names from the overloaded dofile function.
Definition: luaEnv.h:227