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