| [2087] | 1 |  | 
|---|
|  | 2 | function extract_code(fn,s) | 
|---|
| [2710] | 3 | local code = "" | 
|---|
|  | 4 | if fn then | 
|---|
|  | 5 | code = '\n$#include "'..fn..'"\n' | 
|---|
|  | 6 | end | 
|---|
|  | 7 | s= "\n" .. s .. "\n" -- add blank lines as sentinels | 
|---|
|  | 8 | local _,e,c,t = strfind(s, "\n([^\n]-)SCRIPT_([%w_]*)[^\n]*\n") | 
|---|
|  | 9 | while e do | 
|---|
|  | 10 | t = strlower(t) | 
|---|
|  | 11 | if t == "bind_begin" then | 
|---|
|  | 12 | _,e,c = strfind(s,"(.-)\n[^\n]*SCRIPT_BIND_END[^\n]*\n",e) | 
|---|
|  | 13 | if not e then | 
|---|
|  | 14 | tolua_error("Unbalanced 'SCRIPT_BIND_BEGIN' directive in header file") | 
|---|
|  | 15 | end | 
|---|
|  | 16 | end | 
|---|
|  | 17 | if t == "bind_class" or t == "bind_block" then | 
|---|
|  | 18 | local b | 
|---|
|  | 19 | _,e,c,b = string.find(s, "([^{]-)(%b{})", e) | 
|---|
|  | 20 | c = c..'{\n'..extract_code(nil, b)..'\n};\n' | 
|---|
|  | 21 | end | 
|---|
|  | 22 | code = code .. c .. "\n" | 
|---|
|  | 23 | _,e,c,t = strfind(s, "\n([^\n]-)SCRIPT_([%w_]*)[^\n]*\n",e) | 
|---|
|  | 24 | end | 
|---|
|  | 25 | return code | 
|---|
| [2087] | 26 | end | 
|---|
|  | 27 |  | 
|---|
|  | 28 | function preprocess_hook(p) | 
|---|
|  | 29 | end | 
|---|
|  | 30 |  | 
|---|
|  | 31 | function preparse_hook(p) | 
|---|
|  | 32 | end | 
|---|
|  | 33 |  | 
|---|
|  | 34 | function include_file_hook(p, filename) | 
|---|
| [2710] | 35 | do return end | 
|---|
| [2087] | 36 | --print("FILENAME is "..filename) | 
|---|
| [2710] | 37 | p.code = string.gsub(p.code, "\n%s*SigC::Signal", "\n\ttolua_readonly SigC::Signal") | 
|---|
|  | 38 | p.code = string.gsub(p.code, "#ifdef __cplusplus\nextern \"C\" {\n#endif", "") | 
|---|
|  | 39 | p.code = string.gsub(p.code, "#ifdef __cplusplus\n};?\n#endif", "") | 
|---|
|  | 40 | p.code = string.gsub(p.code, "DECLSPEC", "") | 
|---|
|  | 41 | p.code = string.gsub(p.code, "SDLCALL", "") | 
|---|
|  | 42 | p.code = string.gsub(p.code, "DLLINTERFACE", "") | 
|---|
|  | 43 | p.code = string.gsub(p.code, "#define[^\n]*_[hH]_?%s*\n", "\n") | 
|---|
| [2087] | 44 | --print("code is "..p.code) | 
|---|
|  | 45 | end | 
|---|