Mercurial > pub > dyncall > dyncall
comparison test/call_suite_aggrs/mk-cases.lua @ 512:4d0541bf9b38
- sharing some test case gen code
author | Tassilo Philipp |
---|---|
date | Sun, 10 Apr 2022 15:51:00 +0200 |
parents | f0080b53635d |
children | 01f928eb9584 |
comparison
equal
deleted
inserted
replaced
511:a0c51f34023a | 512:4d0541bf9b38 |
---|---|
108 t[#t+1] = "ret_a("..pos..","..h[6]..")}\n" | 108 t[#t+1] = "ret_a("..pos..","..h[6]..")}\n" |
109 end | 109 end |
110 return table.concat(h,"")..table.concat(t,"") | 110 return table.concat(h,"")..table.concat(t,"") |
111 end | 111 end |
112 | 112 |
113 function mkfuntab(n) | 113 -- use shared helpers to generate cases |
114 local s = { "funptr G_funtab[] = {\n"} | 114 package.path = '../common/?.lua;' .. package.path |
115 for i = 0, n-1 do | 115 require"mk-cases" |
116 s[#s+1] = "\t(funptr)&f"..i..",\n" | 116 |
117 end | |
118 s[#s+1] = "};\n" | |
119 return table.concat(s,"") | |
120 end | |
121 | |
122 function mksigtab(sigs) | |
123 local s = { "const char * G_sigtab[] = {\n"} | |
124 for k,v in pairs(sigs) do | |
125 s[#s+1] = '\t"'..v..'",\n' | |
126 end | |
127 s[#s+1] = "};\n" | |
128 return table.concat(s,"") | |
129 end | |
130 | 117 |
131 function split_array_decl(s) | 118 function split_array_decl(s) |
132 local name = s | 119 local name = s |
133 local n = nil -- not an array | 120 local n = nil -- not an array |
134 local array_i = s:find('%[') | 121 local array_i = s:find('%[') |
241 if #agg_names > 0 then | 228 if #agg_names > 0 then |
242 table.insert(agg_names, 1, '') | 229 table.insert(agg_names, 1, '') |
243 end | 230 end |
244 | 231 |
245 io.write(cases) | 232 io.write(cases) |
246 io.write(mkfuntab(lineno)) | 233 io.write(mkfuntab(lineno, 'f', 'funptr', 'G_funtab', true)) |
247 io.write(mksigtab(sigtab)) | 234 io.write(mksigtab(sigtab, '', 'G_sigtab')) |
248 io.write('const char* G_agg_sigs[] = {\n\t"'..table.concat(agg_sigs, '",\n\t"')..'"\n};\n') | 235 io.write('const char* G_agg_sigs[] = {\n\t"'..table.concat(agg_sigs, '",\n\t"')..'"\n};\n') |
249 io.write('int G_agg_sizes[] = {\n\t'..table.concat(agg_sizes, ',\n\t')..'\n};\n') | 236 io.write('int G_agg_sizes[] = {\n\t'..table.concat(agg_sizes, ',\n\t')..'\n};\n') |
250 io.write('funptr G_agg_touchdcstfuncs[] = {'..string.sub(table.concat(agg_names, ',\n\t(funptr)&f_touchdcst'),2)..'\n};\n') | 237 io.write('funptr G_agg_touchdcstfuncs[] = {'..string.sub(table.concat(agg_names, ',\n\t(funptr)&f_touchdcst'),2)..'\n};\n') |
251 io.write('funptr G_agg_cmpfuncs[] = {'..string.sub(table.concat(agg_names, ',\n\t(funptr)&f_cmp'),2)..'\n};\n') | 238 io.write('funptr G_agg_cmpfuncs[] = {'..string.sub(table.concat(agg_names, ',\n\t(funptr)&f_cmp'),2)..'\n};\n') |
252 io.write("int G_maxargs = "..max_numargs..";\n") | 239 io.write("int G_maxargs = "..max_numargs..";\n") |