ToLua can now be run in pure-lua mode.
See the src/Bindings/AllToLua_lua.bat for usage example.
This commit is contained in:
parent
8cfe6c973c
commit
02b509b81d
93
lib/tolua++/src/bin/lua/_driver.lua
Normal file
93
lib/tolua++/src/bin/lua/_driver.lua
Normal 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")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
27
src/Bindings/AllToLua_lua.bat.bat
Normal file
27
src/Bindings/AllToLua_lua.bat.bat
Normal 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
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user