Mercurial > pub > dyncall > dyncall
comparison test/call_suite/mk-cases.lua @ 512:4d0541bf9b38
- sharing some test case gen code
author | Tassilo Philipp |
---|---|
date | Sun, 10 Apr 2022 15:51:00 +0200 |
parents | a0c51f34023a |
children | 01f928eb9584 |
comparison
equal
deleted
inserted
replaced
511:a0c51f34023a | 512:4d0541bf9b38 |
---|---|
20 h[#h] = "){" | 20 h[#h] = "){" |
21 t[#t+1] = "ret_"..sig:sub(-1).."("..pos..")}\n" | 21 t[#t+1] = "ret_"..sig:sub(-1).."("..pos..")}\n" |
22 return table.concat(h,"")..table.concat(t,"") | 22 return table.concat(h,"")..table.concat(t,"") |
23 end | 23 end |
24 | 24 |
25 function mkfuntab(n) | 25 -- use shared helpers to generate cases |
26 local s = { "funptr G_funtab[] = {\n"} | 26 package.path = '../common/?.lua;' .. package.path |
27 for i = 0, n-1 do | 27 require"mk-cases" |
28 s[#s+1] = "\t(funptr)&f"..i..",\n" | |
29 end | |
30 s[#s+1] = "};\n" | |
31 return table.concat(s,"") | |
32 end | |
33 | 28 |
34 function mksigtab(sigs) | |
35 local s = { "const char * G_sigtab[] = {\n"} | |
36 for k,v in pairs(sigs) do | |
37 s[#s+1] = '\t"'..v..'",\n' | |
38 end | |
39 s[#s+1] = "};\n" | |
40 return table.concat(s,"") | |
41 end | |
42 | 29 |
43 function mkall() | 30 function mkall() |
44 local lineno = 0 | 31 local lineno = 0 |
45 local sigtab = { } | 32 local sigtab = { } |
46 for line in io.lines() do | 33 for line in io.lines() do |
47 local sig = trim(line) | 34 local sig = trim(line) |
48 io.write(mkcase(lineno,sig)) | 35 io.write(mkcase(lineno,sig)) |
49 sigtab[#sigtab+1] = sig | 36 sigtab[#sigtab+1] = sig |
50 lineno = lineno + 1 | 37 lineno = lineno + 1 |
51 end | 38 end |
52 io.write(mkfuntab(lineno)) | 39 io.write(mkfuntab(lineno, 'f', 'funptr', 'G_funtab', true)) |
53 io.write(mksigtab(sigtab)) | 40 io.write(mksigtab(sigtab, '', 'G_sigtab')) |
54 io.write("int G_maxargs = "..maxargs..";\n") | 41 io.write("int G_maxargs = "..maxargs..";\n") |
55 end | 42 end |
56 | 43 |
57 mkall() | 44 mkall() |
58 | 45 |