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")