1
0

ToLua can now be run in pure-lua mode.

See the src/Bindings/AllToLua_lua.bat for usage example.
This commit is contained in:
madmaxoft 2014-06-09 17:05:22 +02:00
parent 8cfe6c973c
commit 02b509b81d
6 changed files with 127 additions and 8 deletions

View File

@ -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")

View File

@ -383,7 +383,7 @@ end
-- called to output an error message -- called to output an error message
function output_error_hook(...) 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 end
-- custom pushers -- custom pushers

View File

@ -18,17 +18,16 @@ local function pp_dofile(path)
local ret = file:read("*a") local ret = file:read("*a")
file:close() file:close()
ret = string.gsub(ret, "%.%.%.%s*%)", "...) local arg = {n=select('#', ...), ...};") ret = string.gsub(ret, "%.%.%.%s*%)$", "...) local arg = {n=select('#', ...), ...};")
loaded = true loaded = true
return ret return ret
end end
end end
local f = load(getfile, path) local f, err = load(getfile, path)
if not f then if not f then
error("error loading file " .. path .. ": " .. err)
error("error loading file "..path)
end end
return f() return f()
end end

View File

@ -524,7 +524,7 @@ function Declaration (s,kind,is_parameter)
end end
-- check the form: mod type* name -- 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,'%*') t = split_c_tokens(s1,'%*')
if t.n == 2 then if t.n == 2 then
t[2] = gsub(t[2],'\1','%*') -- restore * in dimension expression t[2] = gsub(t[2],'\1','%*') -- restore * in dimension expression

View File

@ -132,7 +132,7 @@ function classFeature:cfuncname (n)
if not fname or fname == '' then if not fname or fname == '' then
fname = self.name fname = self.name
end end
n = string.gsub(n..'_'.. (fname), "[<>:, \.%*&]", "_") n = string.gsub(n..'_'.. (fname), "[<>:, %.%*&]", "_")
return n return n
end end

View File

@ -0,0 +1,27 @@
:: AllToLua_Lua.bat
:: This scripts updates the automatically-generates Lua bindings in Bindings.cpp / Bindings.h
:: When called without any parameters, it will pause for a keypress at the end
:: Call with any parameter to disable the wait (for buildserver use)
:: This script assumes "lua" executable to be in PATH, it uses a pure-lua implementation of the ToLua processor
@echo off
:: Regenerate the files:
echo Regenerating LUA bindings . . .
lua ..\..\lib\tolua++\src\bin\lua\_driver.lua -L virtual_method_hooks.lua -o Bindings.cpp -H Bindings.h AllToLua.pkg
: Wait for keypress, if no param given:
echo.
if %ALLTOLUA_WAIT%N == N pause