#include <algorithm>#include <string>#include <boost/bind.hpp>#include <Diluculum/LuaExceptions.hpp>#include <Diluculum/LuaState.hpp>#include <Diluculum/LuaUtils.hpp>Include dependency graph for LuaWrappers.hpp:

Go to the source code of this file.
Namespaces | |
| namespace | Diluculum |
| namespace | Diluculum::Impl |
Classes | |
| struct | Diluculum::Impl::CppObject |
| class | Diluculum::Impl::ClassTableFiller |
Defines | |
| #define | DILUCULUM_WRAPPER_FUNCTION(FUNC) Diluculum__ ## FUNC ## __Wrapper_Function |
| #define | DILUCULUM_WRAP_FUNCTION(FUNC) |
| #define | DILUCULUM_CLASS_TABLE(CLASS) Diluculum__Class_Table__ ## CLASS |
| #define | DILUCULUM_BEGIN_CLASS(CLASS) |
| #define | DILUCULUM_METHOD_WRAPPER(CLASS, METHOD) Diluculum__ ## CLASS ## __ ## METHOD ## __Method_Wrapper_Function |
| #define | DILUCULUM_CLASS_METHOD(CLASS, METHOD) |
| #define | DILUCULUM_END_CLASS(CLASS) |
| #define | DILUCULUM_REGISTER_CLASS(LUA_VARIABLE, CLASS) Diluculum_Register_Class__ ## CLASS (LUA_VARIABLE); |
| #define | DILUCULUM_REGISTER_OBJECT(LUA_VARIABLE, CLASS, OBJECT) |
| #define | DILUCULUM_BEGIN_MODULE(MODNAME) |
| #define | DILUCULUM_MODULE_ADD_CLASS(CLASS, LUACLASS) DILUCULUM_REGISTER_CLASS(theModule[LUACLASS], CLASS); |
| #define | DILUCULUM_MODULE_ADD_FUNCTION(CFUNC, LUAFUNC) theModule[LUAFUNC] = CFUNC; |
| #define | DILUCULUM_END_MODULE() |
Functions | |
| void | Diluculum::Impl::ReportErrorFromCFunction (lua_State *ls, const ::std::string &what) |
|
|
Starts a block of class wrapping macro calls. This must be followed by calls to
Definition at line 182 of file LuaWrappers.hpp. |
|
|
Value: extern "C" int luaopen_ ## MODNAME (lua_State *luaState) \ { \ using Diluculum::LuaState; \ using Diluculum::LuaVariable; \ using Diluculum::EmptyLuaValueMap; \ LuaState ls (luaState); \ \ ls[#MODNAME] = EmptyLuaValueMap; \ LuaVariable theModule = ls[#MODNAME]; DILUCULUM_END_MODULE() and contain some calls to macros like DILUCULUM_MODULE_ADD_CLASS() and DILUCULUM_MODULE_ADD_FUNCTION() in its body.
For those who know the way things happen in Lua, this block will provide a
Definition at line 424 of file LuaWrappers.hpp. |
|
|
Exports a given class' method. This macro must be called between calls to
Definition at line 264 of file LuaWrappers.hpp. |
|
|
Returns the name of the table that represent the class
Definition at line 172 of file LuaWrappers.hpp. |
|
|
Value: \ /* The function used to register the class in a 'LuaState' */ \ void Diluculum_Register_Class__ ## CLASS (Diluculum::LuaVariable className) \ { \ Diluculum::LuaState ls (className.getState()); \ \ if (ls["__Diluculum__Class_Metatables"].value().type() == LUA_TNIL) \ ls["__Diluculum__Class_Metatables"] = Diluculum::EmptyLuaValueMap; \ \ DILUCULUM_CLASS_TABLE(CLASS)["classname"] = #CLASS; \ \ DILUCULUM_CLASS_TABLE(CLASS)["new"] = \ Diluculum__ ## CLASS ## __Constructor_Wrapper_Function; \ \ DILUCULUM_CLASS_TABLE(CLASS)["delete"] = \ Diluculum__ ## CLASS ## __Destructor_Wrapper_Function; \ \ DILUCULUM_CLASS_TABLE(CLASS)["__gc"] = \ Diluculum__ ## CLASS ## __Destructor_Wrapper_Function; \ \ DILUCULUM_CLASS_TABLE(CLASS)["__index"] = DILUCULUM_CLASS_TABLE(CLASS); \ \ className = DILUCULUM_CLASS_TABLE(CLASS); \ \ ls["__Diluculum__Class_Metatables"][#CLASS] = \ DILUCULUM_CLASS_TABLE(CLASS); \ } DILUCULUM_BEGIN_CLASS()).
Definition at line 322 of file LuaWrappers.hpp. |
|
|
Value: return 1; \
}
DILUCULUM_BEGIN_MODULE()) that defines a dynamically loadable Lua module.
Definition at line 462 of file LuaWrappers.hpp. |
|
|
Returns the name of the function used to wrap a method
Definition at line 254 of file LuaWrappers.hpp. |
|
|
Adds a class to the module. Must be called between calls to
Definition at line 443 of file LuaWrappers.hpp. |
|
|
Adds a function to the module. Must be called between calls to
Definition at line 454 of file LuaWrappers.hpp. |
|
|
Registers a class in a given
Definition at line 360 of file LuaWrappers.hpp. |
|
|
Value: { \
/* leave the table where 'OBJECT' is to be stored at the stack top */ \
LUA_VARIABLE.pushLastTable(); \
\
/* push the field where the object will be stored */ \
Diluculum::PushLuaValue (LUA_VARIABLE.getState(), \
LUA_VARIABLE.getKeys().back()); \
\
/* create the userdata, set its metatable */ \
void* ud = lua_newuserdata (LUA_VARIABLE.getState(), \
sizeof(Diluculum::Impl::CppObject)); \
\
Diluculum::Impl::CppObject* cppObj = \
reinterpret_cast<Diluculum::Impl::CppObject*>(ud); \
\
cppObj->ptr = &OBJECT; \
cppObj->deleteMe = false; \
\
lua_getglobal (LUA_VARIABLE.getState(), "__Diluculum__Class_Metatables"); \
lua_getfield (LUA_VARIABLE.getState(), -1, #CLASS); \
lua_setmetatable (LUA_VARIABLE.getState(), -3); \
\
lua_pop (LUA_VARIABLE.getState(), 1); /* pop the table of metatables */ \
\
/* store the userdata */ \
lua_settable (LUA_VARIABLE.getState(), -3); \
}
Definition at line 378 of file LuaWrappers.hpp. |
|
|
Creates a
Notice that, thanks to the use of
Definition at line 130 of file LuaWrappers.hpp. |
|
|
Returns the name of the wrapper function that is created by
Definition at line 106 of file LuaWrappers.hpp. |
1.4.6