changeset 512:4d0541bf9b38

- sharing some test case gen code
author Tassilo Philipp
date Sun, 10 Apr 2022 15:51:00 +0200
parents a0c51f34023a
children 95f6f43178ed
files test/call_suite/mk-cases.lua test/call_suite_aggrs/mk-cases.lua test/common/mk-cases.lua
diffstat 3 files changed, 33 insertions(+), 36 deletions(-) [+]
line wrap: on
line diff
--- a/test/call_suite/mk-cases.lua	Sat Apr 09 23:48:01 2022 +0200
+++ b/test/call_suite/mk-cases.lua	Sun Apr 10 15:51:00 2022 +0200
@@ -22,23 +22,10 @@
   return table.concat(h,"")..table.concat(t,"")
 end
 
-function mkfuntab(n)
-  local s = { "funptr G_funtab[] = {\n"}
-  for i = 0, n-1 do
-    s[#s+1] = "\t(funptr)&f"..i..",\n"
-  end
-  s[#s+1] = "};\n"
-  return table.concat(s,"")
-end
+-- use shared helpers to generate cases
+package.path = '../common/?.lua;' .. package.path
+require"mk-cases"
 
-function mksigtab(sigs)
-  local s = { "const char * G_sigtab[] = {\n"}
-  for k,v in pairs(sigs) do
-    s[#s+1] = '\t"'..v..'",\n'
-  end
-  s[#s+1] = "};\n"
-  return table.concat(s,"")
-end
 
 function mkall()
   local lineno = 0
@@ -49,8 +36,8 @@
     sigtab[#sigtab+1] = sig
     lineno = lineno + 1
   end
-  io.write(mkfuntab(lineno))
-  io.write(mksigtab(sigtab))
+  io.write(mkfuntab(lineno, 'f', 'funptr', 'G_funtab', true))
+  io.write(mksigtab(sigtab, '', 'G_sigtab'))
   io.write("int G_maxargs = "..maxargs..";\n")
 end
 
--- a/test/call_suite_aggrs/mk-cases.lua	Sat Apr 09 23:48:01 2022 +0200
+++ b/test/call_suite_aggrs/mk-cases.lua	Sun Apr 10 15:51:00 2022 +0200
@@ -110,23 +110,10 @@
   return table.concat(h,"")..table.concat(t,"")
 end
 
-function mkfuntab(n)
-  local s = { "funptr G_funtab[] = {\n"}
-  for i = 0, n-1 do
-    s[#s+1] = "\t(funptr)&f"..i..",\n"
-  end
-  s[#s+1] = "};\n"
-  return table.concat(s,"")
-end
+-- use shared helpers to generate cases
+package.path = '../common/?.lua;' .. package.path
+require"mk-cases"
 
-function mksigtab(sigs)
-  local s = { "const char * G_sigtab[] = {\n"}
-  for k,v in pairs(sigs) do
-    s[#s+1] = '\t"'..v..'",\n'
-  end
-  s[#s+1] = "};\n"
-  return table.concat(s,"")
-end
 
 function split_array_decl(s)
   local name = s
@@ -243,8 +230,8 @@
   end
 
   io.write(cases)
-  io.write(mkfuntab(lineno))
-  io.write(mksigtab(sigtab))
+  io.write(mkfuntab(lineno, 'f', 'funptr', 'G_funtab', true))
+  io.write(mksigtab(sigtab, '', 'G_sigtab'))
   io.write('const char* G_agg_sigs[]  = {\n\t"'..table.concat(agg_sigs, '",\n\t"')..'"\n};\n')
   io.write('int G_agg_sizes[] = {\n\t'..table.concat(agg_sizes, ',\n\t')..'\n};\n')
   io.write('funptr G_agg_touchdcstfuncs[] = {'..string.sub(table.concat(agg_names, ',\n\t(funptr)&f_touchdcst'),2)..'\n};\n')
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/common/mk-cases.lua	Sun Apr 10 15:51:00 2022 +0200
@@ -0,0 +1,23 @@
+function mkfuntab(n, prefix, t, array_name, with_cast)
+  local s = { t.." "..array_name.."[] = {\n"}
+  local cast = ''
+  if with_cast == true then
+    cast = '('..t..')'
+  end
+  for i = 0, n-1 do
+    s[#s+1] = "\t"..cast.."&"..prefix..i..",\n"
+  end
+  s[#s+1] = "};\n"
+  return table.concat(s,"")
+end
+
+-- @@@ sigprefix should be added by generators, not here
+function mksigtab(sigs, sigprefix, array_name)
+  local s = { "const char * "..array_name.."[] = {\n"}
+  for k,v in pairs(sigs) do
+    s[#s+1] = '\t"'..sigprefix..v..'",\n'
+  end
+  s[#s+1] = "};\n"
+  return table.concat(s,"")
+end
+