46 lines
1.3 KiB
Lua
46 lines
1.3 KiB
Lua
|
|
function extract_code(fn,s)
|
|
local code = ""
|
|
if fn then
|
|
code = '\n$#include "'..fn..'"\n'
|
|
end
|
|
s= "\n" .. s .. "\n" -- add blank lines as sentinels
|
|
local _,e,c,t = strfind(s, "\n([^\n]-)SCRIPT_([%w_]*)[^\n]*\n")
|
|
while e do
|
|
t = strlower(t)
|
|
if t == "bind_begin" then
|
|
_,e,c = strfind(s,"(.-)\n[^\n]*SCRIPT_BIND_END[^\n]*\n",e)
|
|
if not e then
|
|
tolua_error("Unbalanced 'SCRIPT_BIND_BEGIN' directive in header file")
|
|
end
|
|
end
|
|
if t == "bind_class" or t == "bind_block" then
|
|
local b
|
|
_,e,c,b = string.find(s, "([^{]-)(%b{})", e)
|
|
c = c..'{\n'..extract_code(nil, b)..'\n};\n'
|
|
end
|
|
code = code .. c .. "\n"
|
|
_,e,c,t = strfind(s, "\n([^\n]-)SCRIPT_([%w_]*)[^\n]*\n",e)
|
|
end
|
|
return code
|
|
end
|
|
|
|
function preprocess_hook(p)
|
|
end
|
|
|
|
function preparse_hook(p)
|
|
end
|
|
|
|
function include_file_hook(p, filename)
|
|
do return end
|
|
--print("FILENAME is "..filename)
|
|
p.code = string.gsub(p.code, "\n%s*SigC::Signal", "\n\ttolua_readonly SigC::Signal")
|
|
p.code = string.gsub(p.code, "#ifdef __cplusplus\nextern \"C\" {\n#endif", "")
|
|
p.code = string.gsub(p.code, "#ifdef __cplusplus\n};?\n#endif", "")
|
|
p.code = string.gsub(p.code, "DECLSPEC", "")
|
|
p.code = string.gsub(p.code, "SDLCALL", "")
|
|
p.code = string.gsub(p.code, "DLLINTERFACE", "")
|
|
p.code = string.gsub(p.code, "#define[^\n]*_[hH]_?%s*\n", "\n")
|
|
--print("code is "..p.code)
|
|
end
|