From 02b509b81d4543a958caaad8389fa0cebd0a8e1a Mon Sep 17 00:00:00 2001 From: madmaxoft Date: Mon, 9 Jun 2014 17:05:22 +0200 Subject: ToLua can now be run in pure-lua mode. See the src/Bindings/AllToLua_lua.bat for usage example. --- lib/tolua++/src/bin/lua/_driver.lua | 93 +++++++++++++++++++++++++++++++++ lib/tolua++/src/bin/lua/basic.lua | 2 +- lib/tolua++/src/bin/lua/compat-5.1.lua | 9 ++-- lib/tolua++/src/bin/lua/declaration.lua | 2 +- lib/tolua++/src/bin/lua/feature.lua | 2 +- 5 files changed, 100 insertions(+), 8 deletions(-) create mode 100644 lib/tolua++/src/bin/lua/_driver.lua (limited to 'lib/tolua++/src/bin') diff --git a/lib/tolua++/src/bin/lua/_driver.lua b/lib/tolua++/src/bin/lua/_driver.lua new file mode 100644 index 000000000..ec07573cb --- /dev/null +++ b/lib/tolua++/src/bin/lua/_driver.lua @@ -0,0 +1,93 @@ + +-- Allow debugging by ZBS, if run under the IDE: +local mobdebugfound, mobdebug = pcall(require, "blamobdebug") +if mobdebugfound then mobdebug.start() end + +-- The list of valid arguments that the ToLua scripts can process: +local KnownArgs = { + ['v'] = true, + ['h'] = true, + ['p'] = true, + ['P'] = true, + ['o'] = true, + ['n'] = true, + ['H'] = true, + ['S'] = true, + ['1'] = true, + ['L'] = true, + ['D'] = true, + ['W'] = true, + ['C'] = true, + ['E'] = true, + ['t'] = true, + ['q'] = true, +} + + + + + +-- The flags table used by ToLua scripts, to be filled from the cmdline params: +flags = {} + +-- Te extra parameters used by ToLua scripts: +_extra_parameters = {} + +-- ToLua version required by the scripts: +TOLUA_VERSION = "tolua++-1.0.92" + +-- Lua version used by ToLua, required by the scripts: +TOLUA_LUA_VERSION = "Lua 5.1" + + + + + + +-- Process the cmdline params into the flags table: +local args = arg or {} +local argc = #args +local i = 1 +while (i <= argc) do + local argv = args[i] + if (argv:sub(1, 1) == "-") then + if (KnownArgs[argv:sub(2)]) then + print("Setting flag \"" .. argv:sub(2) .. "\" to \"" .. args[i + 1] .. "\".") + flags[argv:sub(2)] = args[i + 1] + i = i + 1 + else + print("Unknown option (" .. i .. "): " .. argv) + print("Aborting.") + os.exit(1) + end + else + print("Setting flag \"f\" to \"" .. argv .. "\".") + flags['f'] = argv + break + end + i = i + 1 +end + +-- Get the path where the scripts are located: +path = args[0] or "" +local index = path:find("/[^/]*$") +if (index == nil) then + index = path:find("\\[^\\]*$") +end +if (index ~= nil) then + path = path:sub(1, index) +end + +print("path is set to \"" .. path .. "\".") + + + + + +-- Call the ToLua processor: +dofile(path .. "all.lua") + + + + + diff --git a/lib/tolua++/src/bin/lua/basic.lua b/lib/tolua++/src/bin/lua/basic.lua index 4bff5276b..7b401d638 100644 --- a/lib/tolua++/src/bin/lua/basic.lua +++ b/lib/tolua++/src/bin/lua/basic.lua @@ -383,7 +383,7 @@ end -- called to output an error message function output_error_hook(...) - return string.format(...) + return string.format(...) -- Note that this line must not end in the triple-dot-parenthesis due to pre-parsing end -- custom pushers diff --git a/lib/tolua++/src/bin/lua/compat-5.1.lua b/lib/tolua++/src/bin/lua/compat-5.1.lua index 7a2c60b69..c591592a6 100644 --- a/lib/tolua++/src/bin/lua/compat-5.1.lua +++ b/lib/tolua++/src/bin/lua/compat-5.1.lua @@ -18,17 +18,16 @@ local function pp_dofile(path) local ret = file:read("*a") file:close() - ret = string.gsub(ret, "%.%.%.%s*%)", "...) local arg = {n=select('#', ...), ...};") - + ret = string.gsub(ret, "%.%.%.%s*%)$", "...) local arg = {n=select('#', ...), ...};") + loaded = true return ret end end - local f = load(getfile, path) + local f, err = load(getfile, path) if not f then - - error("error loading file "..path) + error("error loading file " .. path .. ": " .. err) end return f() end diff --git a/lib/tolua++/src/bin/lua/declaration.lua b/lib/tolua++/src/bin/lua/declaration.lua index 26ceeba22..3ec6e144f 100644 --- a/lib/tolua++/src/bin/lua/declaration.lua +++ b/lib/tolua++/src/bin/lua/declaration.lua @@ -524,7 +524,7 @@ function Declaration (s,kind,is_parameter) end -- check the form: mod type* name - local s1 = gsub(s,"(%b\[\])",function (n) return gsub(n,'%*','\1') end) + local s1 = gsub(s,"(%b%[%])",function (n) return gsub(n,'%*','\1') end) t = split_c_tokens(s1,'%*') if t.n == 2 then t[2] = gsub(t[2],'\1','%*') -- restore * in dimension expression diff --git a/lib/tolua++/src/bin/lua/feature.lua b/lib/tolua++/src/bin/lua/feature.lua index 042b5d28e..14f01d325 100644 --- a/lib/tolua++/src/bin/lua/feature.lua +++ b/lib/tolua++/src/bin/lua/feature.lua @@ -132,7 +132,7 @@ function classFeature:cfuncname (n) if not fname or fname == '' then fname = self.name end - n = string.gsub(n..'_'.. (fname), "[<>:, \.%*&]", "_") + n = string.gsub(n..'_'.. (fname), "[<>:, %.%*&]", "_") return n end -- cgit v1.2.3 From 9b5e852f753ae56597bb1c099d6e403d301ae531 Mon Sep 17 00:00:00 2001 From: madmaxoft Date: Mon, 9 Jun 2014 20:00:17 +0200 Subject: Fixed debugging code in tolua++ driver script. --- lib/tolua++/src/bin/lua/_driver.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib/tolua++/src/bin') diff --git a/lib/tolua++/src/bin/lua/_driver.lua b/lib/tolua++/src/bin/lua/_driver.lua index ec07573cb..21db96098 100644 --- a/lib/tolua++/src/bin/lua/_driver.lua +++ b/lib/tolua++/src/bin/lua/_driver.lua @@ -1,6 +1,6 @@ -- Allow debugging by ZBS, if run under the IDE: -local mobdebugfound, mobdebug = pcall(require, "blamobdebug") +local mobdebugfound, mobdebug = pcall(require, "mobdebug") if mobdebugfound then mobdebug.start() end -- The list of valid arguments that the ToLua scripts can process: -- cgit v1.2.3