![]() |
Lua Utils
Biblioteca utilitária para facilitar a integração de Lua com C++
|
Classe similar a LuaMethod porém com algumas diferenças fundamentais: More...
#include <luaMethod.h>
Classes | |
struct | MethodRegistry |
Classe auxiliar para registro dos nomes e métodos a serem chamados. More... | |
Public Types | |
typedef int(T::* | MethodType) (lua_State *) |
Typedef para método de T com assinatura de uma função chamada por Lua. | |
Static Public Member Functions | |
static void | registerMethods (lua_State *L, struct MethodRegistry *methods, T *obj) |
Registra na tabela contida na pilha as funções contidas em methods. Obj deve conter ponteiro par o objeto que será usado na execução dos métodos. More... | |
Static Private Member Functions | |
static int | methodRedirector (lua_State *L) |
Stub utilizado para chamada dos métodos da classe T. More... | |
Classe similar a LuaMethod porém com algumas diferenças fundamentais:
As funções cadastradas não são chamadas de Lua através da sintaxe de métodos (obj:metodo()) e sim como uma função normal. O objeto C++ é obtido através de um upvalue (dai o nome da classe). Além disso, o objeto não precisa herdar de LuaProxy.
Como o objeto C++ é obtido de um upvalue, não é possível exportar funções de múltiplas instâncias de um tipo em C++.
|
inlinestaticprivate |
Stub utilizado para chamada dos métodos da classe T.
Recebe como primeiro upvalue o método a ser chamado através de um lightuserdata apontando para um resgistro do tipo MethodRegistry.
Como segundo upvalue, recebe o objeto sobre o qual os métodos serão chamados
|
inlinestatic |
Registra na tabela contida na pilha as funções contidas em methods. Obj deve conter ponteiro par o objeto que será usado na execução dos métodos.
Tabela deve ser terminada com uma entrada NULL. Além disso, a tabela deve ser estática ou global, uma vez que ponteiros para as entradas da tabela serão armazenados em Lua.
A tabela onde os métodos serão registrados deverá estar no topo da pilha.