Lua Utils
Biblioteca utilitária para facilitar a integração de Lua com C++
Classes | Public Types | Static Public Member Functions | Static Private Member Functions | List of all members
LuaUpMethod< T > Class Template Reference

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...
 

Detailed Description

template<typename T>
class LuaUpMethod< T >

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++.

Member Function Documentation

◆ methodRedirector()

template<typename T >
static int LuaUpMethod< T >::methodRedirector ( lua_State *  L)
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

◆ registerMethods()

template<typename T >
static void LuaUpMethod< T >::registerMethods ( lua_State *  L,
struct MethodRegistry methods,
T *  obj 
)
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.


The documentation for this class was generated from the following file: