|
|
发表于 2006-3-15 19:04:00
|
显示全部楼层
Re:关于lua的封装luawrapper-luabind-cpplua-tolua心得
//LuaWrapper.h?面改成??幽?
#define _Use_Lua_5_1 true
class LuaWrap
: public luaStack
{
public:
LuaWrap()
: luaStack(lua_open())
{
// initialize lua standard library functions
#ifdef _Use_Lua_5_1
//Lua 5.1初始化
luaopen_base(m_pluaVM);
luaopen_table(m_pluaVM);
luaopen_io(m_pluaVM);
luaopen_string(m_pluaVM);
luaopen_math(m_pluaVM);
luaopen_debug(m_pluaVM);
luaopen_os(m_pluaVM); //?
luaopen_package(m_pluaVM); //?
#else
//Lua?版初始化
lua_baselibopen(m_pluaVM);
lua_tablibopen(m_pluaVM);
lua_iolibopen(m_pluaVM);
lua_strlibopen(m_pluaVM);
lua_mathlibopen(m_pluaVM);
lua_dblibopen(m_pluaVM);
#endif
}
~LuaWrap()
{
if(m_pluaVM)
lua_close(m_pluaVM);
}
public:
bool LoadFile(const char* filename)
{
#ifdef _Use_Lua_5_1
return luaL_loadfile(m_pluaVM, filename) == 0;
#else
return lua_dofile(m_pluaVM, filename) == 0;
#endif
}
bool LoadString(const char* buffer)
{
return LoadBuffer(buffer, strlen(buffer));
}
bool LoadBuffer(const char* buffer, size_t size)
{
#ifdef _Use_Lua_5_1
return luaL_loadbuffer(m_pluaVM, buffer, size, "LuaWrap") == 0;
#else
return lua_dobuffer(m_pluaVM, buffer, size, "LuaWrap") == 0;
#endif
}
void Register(const char* func, lua_CFunction f)
{
lua_register(m_pluaVM, func, f);
}
template<class LUATYPE>
void Register()
{
LUATYPE: uaOpenLibMember(m_pluaVM);
LUATYPE::LuaOpenLib(m_pluaVM);
}
//operator lua_State* ()
//{
// return m_pluaVM;
//}
}; |
|