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