summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRemko Tronçon <git@el-tramo.be>2013-12-26 15:56:45 (GMT)
committerRemko Tronçon <git@el-tramo.be>2013-12-27 23:06:53 (GMT)
commit5a89265623214164fa7ce36721de05183d53058d (patch)
tree1cb061f1c314668396dd0e16047d995641631d4f /Sluift/sluift.cpp
parent806efd2603a4083ca433501dcd6e5b8479db0b39 (diff)
downloadswift-5a89265623214164fa7ce36721de05183d53058d.zip
swift-5a89265623214164fa7ce36721de05183d53058d.tar.bz2
Sluift: Refactoring
- Rename boot.lua to core.lua - Support Lua 5.2 - Support version prefixes for sluift module - Add Client:process_events Change-Id: I3fa6d06d1dbdf86f65b9f4203bd2ec5b5526b104
Diffstat (limited to 'Sluift/sluift.cpp')
-rw-r--r--Sluift/sluift.cpp29
1 files changed, 14 insertions, 15 deletions
diff --git a/Sluift/sluift.cpp b/Sluift/sluift.cpp
index 95e7101..e6b2bb6 100644
--- a/Sluift/sluift.cpp
+++ b/Sluift/sluift.cpp
@@ -40,7 +40,7 @@ namespace Swift {
}
}
-extern "C" const char boot_lua[];
+extern "C" const char core_lua[];
/*******************************************************************************
* Module functions
@@ -263,21 +263,21 @@ SLUIFT_LUA_FUNCTION(IDN, stringprep) {
* Module registration
******************************************************************************/
-static const luaL_reg sluift_functions[] = { {NULL, NULL} };
+static const luaL_Reg sluift_functions[] = { {NULL, NULL} };
SLUIFT_API int luaopen_sluift(lua_State* L) {
// Initialize globals
Sluift::globals.debug = false;
Sluift::globals.timeout = -1;
- luaL_register(L, "sluift", sluift_functions);
+ luaL_register(L, lua_tostring(L, 1), sluift_functions);
- // Load bootstrap code
- if (luaL_loadbuffer(L, boot_lua, strlen(boot_lua), "boot.lua") != 0) {
+ // Load core lib code
+ if (luaL_loadbuffer(L, core_lua, strlen(core_lua), "core.lua") != 0) {
lua_error(L);
}
lua_call(L, 0, 1);
- Sluift::globals.bootIndex = luaL_ref(L, LUA_REGISTRYINDEX);
+ Sluift::globals.coreLibIndex = luaL_ref(L, LUA_REGISTRYINDEX);
// Register functions
Lua::FunctionRegistry::getInstance().addFunctionsToTable(L, "Sluift");
@@ -289,14 +289,13 @@ SLUIFT_API int luaopen_sluift(lua_State* L) {
lua_setfield(L, -2, "idn");
// Register convenience functions
- lua_rawgeti(L, LUA_REGISTRYINDEX, Sluift::globals.bootIndex);
- lua_getfield(L, -1, "tprint");
- lua_setfield(L, -3, "tprint");
- lua_pop(L, 1);
-
- lua_rawgeti(L, LUA_REGISTRYINDEX, Sluift::globals.bootIndex);
- lua_getfield(L, -1, "disco");
- lua_setfield(L, -3, "disco");
+ lua_rawgeti(L, LUA_REGISTRYINDEX, Sluift::globals.coreLibIndex);
+ std::vector<std::string> coreLibExports = boost::assign::list_of
+ ("tprint")("disco");
+ foreach (const std::string& coreLibExport, coreLibExports) {
+ lua_getfield(L, -1, coreLibExport.c_str());
+ lua_setfield(L, -3, coreLibExport.c_str());
+ }
lua_pop(L, 1);
// Set read only
@@ -312,7 +311,7 @@ SLUIFT_API int luaopen_sluift(lua_State* L) {
foreach (const std::string& table, tables) {
Lua::FunctionRegistry::getInstance().registerTypeMetaTable(L, table);
luaL_getmetatable(L, Lua::FunctionRegistry::getMetaTableNameForType(table).c_str());
- lua_rawgeti(L, LUA_REGISTRYINDEX, Sluift::globals.bootIndex);
+ lua_rawgeti(L, LUA_REGISTRYINDEX, Sluift::globals.coreLibIndex);
lua_getfield(L, -1, table.c_str());
if (!lua_isnil(L, -1)) {
for (lua_pushnil(L); lua_next(L, -2); ) {