![]() |
Lua Utils
Biblioteca utilitária para facilitar a integração de Lua com C++
|
Classe para interface com ambientes Lua, modelando uma tabela. More...
#include <luaTable.h>
Public Member Functions | |
LuaTable () | |
Construtor default. | |
LuaTable (const LuaTable &other) | |
Construtor de cópia. Gera nova referência para a mesma tabela Lua. | |
LuaTable (LuaEnv *lua, int index, bool ref=false) | |
Cria objeto encapsulando a tabela presente no indice recebido como parâmetro. More... | |
LuaTable (LuaEnv *lua) | |
Cria uma NOVA tabela no topo da pilha e constroi objeto encapsulando a mesma. More... | |
~LuaTable () | |
Destrutor. | |
QVariant | getIndex (int index, LuaEnv::StackOption opt=LuaEnv::STACK_AUTO) |
Retorna o valor contido na posição "index" da tabela. More... | |
QVariant | getField (const char *name, LuaEnv::StackOption opt=LuaEnv::STACK_AUTO) |
Retorna o valor contido no campo "name" da tabela. More... | |
void | pushField (const char *name) |
Similar to getField(), instead of returning the value as a QVariant, pushes it on the stack. | |
QVariant | getField (QString name, LuaEnv::StackOption opt=LuaEnv::STACK_AUTO) |
Método sobrecarregado recebendo um QString. | |
void | pushField (QString name) |
Método sobrecarregado recebendo um QString. | |
QVariant | toVariant () const |
Retorna um Qvariant. | |
QStringList | toStringList () |
Retorna conteúdo dos campos numéricos da tabela inclusos em uma lista de strings. More... | |
QList< double > | toDoubleList () |
Retorna conteúdo dos campos numéricos da tabela inclusos em uma lista de double. More... | |
QList< bool > | toBoolList () |
Retorna conteúdo dos campos numéricos da tabela inclusos em uma lista de bool. More... | |
QVariantList | toVariantList () |
Retorna conteúdo dos campos numéricos da tabela inclusos em uma lista de QVariant. More... | |
void | fromStringList (const QStringList &list) |
Preenche tabela associando índices 1..n com valores presentes na lista recebida. | |
void | fromVariantList (const QVariantList &list) |
Preenche tabela associando indices com o conteudo da lista recebida. More... | |
void | fromVariantMap (const QVariantMap &map, bool useIntegerKeys=false) |
Preenche tabela associando chaves com o conteudo do mapa recebido. More... | |
void | setIndex (int index, const QVariant &val, bool raw=false) |
Seta o valor contido na posição "index" da tabela. | |
void | setField (const char *name, const QVariant &val, bool raw=false) |
Seta o valor contido na posição "name" da tabela. | |
void | setField (const QVariant &key, const QVariant &val, bool raw=false) |
Seta o valor contido na posição key da tabela. | |
void | setField (QString name, const QVariant &val, bool raw=false) |
Método sobrecarregado recebendo um QString. | |
bool | callMethod (const char *name, int nresults, QString &err) |
Chama método, sem passar nenhum argumento além da própria tabela (self). More... | |
bool | callMethod (const char *name, QVariant a1, int nresults, QString &err) |
Overload de callMethod() recebendo 1 parâmetro a ser passado para a função. | |
bool | callMethod (const char *name, QVariant a1, QVariant a2, int nresults, QString &err) |
Overload de callMethod() recebendo 2 parâmetros a serem passados para a função. | |
bool | callMethod (const char *name, QVariant a1, QVariant a2, QVariant a3, int nresults, QString &err) |
Overload de callMethod() recebendo 3 parâmetros a serem passados para a função. | |
bool | callMethod (const char *name, QVariant a1, QVariant a2, QVariant a3, QVariant a4, int nresults, QString &err) |
Overload de callMethod() recebendo 4 parâmetros a serem passados para a função. | |
bool | callMethod (const char *name, QVariant a1, QVariant a2, QVariant a3, QVariant a4, QVariant a5, int nresults, QString &err) |
Overload de callMethod() recebendo 5 parâmetros a serem passados para a função. | |
bool | callMethod (const char *name, QVariant a1, QVariant a2, QVariant a3, QVariant a4, QVariant a5, QVariant a6, int nresults, QString &err) |
Overload de callMethod() recebendo 6 parâmetros a serem passados para a função. | |
bool | callMethod (const char *name, QVariant a1, QVariant a2, QVariant a3, QVariant a4, QVariant a5, QVariant a6, QVariant a7, int nresults, QString &err) |
Overload de callMethod() recebendo 7 parâmetros a serem passados para a função. | |
bool | callFunction (const char *name, int nresults, QString &err) |
Chama função, sem passar nenhum argumento. More... | |
bool | callFunction (const char *name, QVariant a1, int nresults, QString &err) |
Overload de callFunction() recebendo 1 parâmetro a ser passado para a função. | |
bool | callFunction (const char *name, QVariant a1, QVariant a2, int nresults, QString &err) |
Overload de callFunction() recebendo 2 parâmetros a serem passados para a função. | |
bool | callFunction (const char *name, QVariant a1, QVariant a2, QVariant a3, int nresults, QString &err) |
Overload de callFunction() recebendo 3 parâmetros a serem passados para a função. | |
bool | callFunction (const char *name, QVariant a1, QVariant a2, QVariant a3, QVariant a4, int nresults, QString &err) |
Overload de callFunction() recebendo 4 parâmetros a serem passados para a função. | |
bool | callFunction (const char *name, QVariant a1, QVariant a2, QVariant a3, QVariant a4, QVariant a5, int nresults, QString &err) |
Overload de callFunction() recebendo 5 parâmetros a serem passados para a função. | |
bool | callFunction (const char *name, QVariant a1, QVariant a2, QVariant a3, QVariant a4, QVariant a5, QVariant a6, int nresults, QString &err) |
Overload de callFunction() recebendo 6 parâmetros a serem passados para a função. | |
bool | callFunction (const char *name, QVariant a1, QVariant a2, QVariant a3, QVariant a4, QVariant a5, QVariant a6, QVariant a7, int nresults, QString &err) |
Overload de callFunction() recebendo 7 parâmetros a serem passados para a função. | |
int | size () |
Retorna o tamanho da tabela. More... | |
template<class T > | |
bool | traverse (T &obj) |
Passa por todos os itens da tabela chamando obj(Qvariant key, QVariant val), onde key e val contém o par (chave, valor) obtido da tabela através do uso da função lua_next. Se a chamada retornar false, aborta o loop. More... | |
bool | callMethodPrepare (const char *name, bool pushTable, QString &err) |
Prepara cahamada de método da tabela, colocando função e self (se pushTable == true) no topo da pilha. | |
![]() | |
LuaObjRef () | |
Construtor default. | |
LuaObjRef (const LuaObjRef &other) | |
Construtor de cópia. Gera nova referência para o mesmo objeto. | |
LuaObjRef (LuaEnv *lua, int index, bool ref=false) | |
Cria objeto encapsulando o objeto presente no indice recebido como parâmetro. More... | |
~LuaObjRef () | |
Destrutor. | |
LuaObjRef & | operator= (const LuaObjRef &) |
Operador de atribuição. | |
void | makeRef () |
Se objeto armazena apenas o índice na pilha, cria nova referência para o objeto e a armazena. | |
int | ref () const |
Retorna a referência salva pelo objeto (pode ser LUA_NOREF) | |
void | push () const |
Coloca referência para o objeto no topo da pilha em Lua. | |
bool | isValid () const |
Retorna true se o objeto contiver uma referência válida (não foi construída com o construtor default) | |
LuaEnv * | env () const |
Retorna o ambiente Lua a que este objeto pertence. | |
void | adjustStackIndex (int offset) |
Adds the given (positive or negative) offset to the table's stackIndex. Should be used only for tables storing an index, and NOT for tables storing a reference. More... | |
Additional Inherited Members | |
![]() | |
int | objectPos () |
Se o objeto já está na pilha (_ref == LUA_NOREF), simplesmente retorna sua posição. Senão (estamos mantendo uma referência para o objeto), coloca o mesmo no topo da pilha e retorna esta posição. | |
![]() | |
LuaEnv * | _lua |
Estado Lua que contém o objeto. | |
int | _stackIndex |
Indice na pilha contendo o objeto. Valido se _ref == LUA_NOREF. | |
int | _ref |
Referencia para o objeto. | |
Classe para interface com ambientes Lua, modelando uma tabela.
Dependendo de como o objeto for construido, pode criar e guardar uma referência para a tabela ou simplesmente guardar a posição na pilha que a tabela ocupa. Neste segundo caso, o objeto é válido apenas enquanto a tabela continuar na mesma posição da pilha.
LuaTable::LuaTable | ( | LuaEnv * | lua, |
int | index, | ||
bool | ref = false |
||
) |
Cria objeto encapsulando a tabela presente no indice recebido como parâmetro.
lua | Ambiente Lua |
index | Indice da tabela na pilha (aceita indices negativos que são internamente convertidos para seu equivalente positivo) |
ref | Se true, armazena uma referência para a tabela. Se false, armazena apenas o índice da pilha onde a tabela está. Neste caso, o objeto se mantém válido apenas enquanto a tabela estiver neste indice da pilha. |
LuaTable::LuaTable | ( | LuaEnv * | lua | ) |
Cria uma NOVA tabela no topo da pilha e constroi objeto encapsulando a mesma.
lua | Ambiente Lua |
bool LuaTable::callFunction | ( | const char * | name, |
int | nresults, | ||
QString & | err | ||
) |
Chama função, sem passar nenhum argumento.
Resultados são mantidos na pilha. Em caso de erro a mensagem é retirada da pilha e retornada em err.
name | Nome da função a ser chamada |
nresults | Numero de resultados da função |
err | Retorna mensagem explicativa no caso de erro |
bool LuaTable::callMethod | ( | const char * | name, |
int | nresults, | ||
QString & | err | ||
) |
Chama método, sem passar nenhum argumento além da própria tabela (self).
Resultados são mantidos na pilha. Em caso de erro a mensagem é retirada da pilha e retornada em err.
name | Nome do método a ser chamado |
nresults | Numero de resultados da função |
err | Retorna mensagem explicativa no caso de erro |
void LuaTable::fromVariantList | ( | const QVariantList & | list | ) |
Preenche tabela associando indices com o conteudo da lista recebida.
Esta função espera que a lista recebida contenha strings, números, booleanos, QVariants nulos, QVariantMaps ou QVariantLists (conforme esperado se a lista tiver sido criado por uma chamada a LuaEnv::clearReferences()). Mapas e listas são processados recursivamente. Valores com tipos distintos dos acima são simplesmente ignorados.
void LuaTable::fromVariantMap | ( | const QVariantMap & | map, |
bool | useIntegerKeys = false |
||
) |
Preenche tabela associando chaves com o conteudo do mapa recebido.
Esta função espera que o mapa recebido contenha strings, números, booleanos, QVariants nulos, QVariantMaps ou QVariantLists (conforme esperado se o mapa tiver sido criado por uma chamada a LuaEnv::clearReferences()). Mapas e listas são processados recursivamente. Valores com tipos distintos dos acima são simplesmente ignorados.
If useIntegerKeys is set to ture, if the key in the map can be translated to an integer value, that integer will be used as key instead of the original string with that integer.
QVariant LuaTable::getField | ( | const char * | name, |
LuaEnv::StackOption | opt = LuaEnv::STACK_AUTO |
||
) |
Retorna o valor contido no campo "name" da tabela.
Valor é ou não mantido da pilha de acordo com o valor do parâmetro opt, conforme descrito em
QVariant LuaTable::getIndex | ( | int | index, |
LuaEnv::StackOption | opt = LuaEnv::STACK_AUTO |
||
) |
Retorna o valor contido na posição "index" da tabela.
Valor é ou não mantido da pilha de acordo com o valor do parâmetro opt, conforme descrito em
int LuaTable::size | ( | ) |
Retorna o tamanho da tabela.
Válida apenas para tabelas que funcionam como um array (tabelas cujo primeiro valor está no índice 1 e não possui "buracos")
QList< bool > LuaTable::toBoolList | ( | ) |
Retorna conteúdo dos campos numéricos da tabela inclusos em uma lista de bool.
Válida apenas para tabelas que funcionam como um array (tabelas cujo primeiro valor está no índice 1 e não possui "buracos"), que contenham valores conversíveis para bool
QList< double > LuaTable::toDoubleList | ( | ) |
Retorna conteúdo dos campos numéricos da tabela inclusos em uma lista de double.
Válida apenas para tabelas que funcionam como um array (tabelas cujo primeiro valor está no índice 1 e não possui "buracos"), que contenham valores conversíveis para double
QStringList LuaTable::toStringList | ( | ) |
Retorna conteúdo dos campos numéricos da tabela inclusos em uma lista de strings.
Válida apenas para tabelas que funcionam como um array (tabelas cujo primeiro valor está no índice 1 e não possui "buracos"), que contenham valores conversíveis para string
QVariantList LuaTable::toVariantList | ( | ) |
Retorna conteúdo dos campos numéricos da tabela inclusos em uma lista de QVariant.
Válida apenas para tabelas que funcionam como um array (tabelas cujo primeiro valor está no índice 1 e não possui "buracos")
bool LuaTable::traverse | ( | T & | obj | ) |
Passa por todos os itens da tabela chamando obj(Qvariant key, QVariant val), onde key e val contém o par (chave, valor) obtido da tabela através do uso da função lua_next. Se a chamada retornar false, aborta o loop.
Obs: obj() deve ser balanceada, ou seja o estado da pilha após a chamada do objeto deve ser o mesmo que em sua entrada
Retorna false se o loop foi abortado, true se todos os objetos foram percorridos