annotate test/callback_suite/mk-cases.lua @ 518:a0ff5dff090b

- callback_suite: generator simplification and removal of pointless lua local var declarations
author Tassilo Philipp
date Mon, 11 Apr 2022 15:06:44 +0200
parents 1a813b706de4
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
505
049e04af13c8 test/callback_suite:
Tassilo Philipp
parents:
diff changeset
1 require "config"
049e04af13c8 test/callback_suite:
Tassilo Philipp
parents:
diff changeset
2
514
01f928eb9584 - more test code generator code sharing
Tassilo Philipp
parents: 513
diff changeset
3 -- use shared helpers to generate cases
01f928eb9584 - more test code generator code sharing
Tassilo Philipp
parents: 513
diff changeset
4 package.path = '../common/?.lua;' .. package.path
01f928eb9584 - more test code generator code sharing
Tassilo Philipp
parents: 513
diff changeset
5 require"mk-cases"
01f928eb9584 - more test code generator code sharing
Tassilo Philipp
parents: 513
diff changeset
6
01f928eb9584 - more test code generator code sharing
Tassilo Philipp
parents: 513
diff changeset
7
505
049e04af13c8 test/callback_suite:
Tassilo Philipp
parents:
diff changeset
8 function mkcase(id,sig)
514
01f928eb9584 - more test code generator code sharing
Tassilo Philipp
parents: 513
diff changeset
9 local sig = trim(sig)
509
f3d44195dbdf callback_suite:
Tassilo Philipp
parents: 507
diff changeset
10 local rtype = string.sub(sig, -1)
513
95f6f43178ed test/callback_suite simplifications:
Tassilo Philipp
parents: 509
diff changeset
11 local i = 1
95f6f43178ed test/callback_suite simplifications:
Tassilo Philipp
parents: 509
diff changeset
12 local args = { rtype }
95f6f43178ed test/callback_suite simplifications:
Tassilo Philipp
parents: 509
diff changeset
13 while i < #sig do
95f6f43178ed test/callback_suite simplifications:
Tassilo Philipp
parents: 509
diff changeset
14 c = string.sub(sig, i, i)
95f6f43178ed test/callback_suite simplifications:
Tassilo Philipp
parents: 509
diff changeset
15 if(c == ')') then
95f6f43178ed test/callback_suite simplifications:
Tassilo Philipp
parents: 509
diff changeset
16 break
95f6f43178ed test/callback_suite simplifications:
Tassilo Philipp
parents: 509
diff changeset
17 end
95f6f43178ed test/callback_suite simplifications:
Tassilo Philipp
parents: 509
diff changeset
18 if(c == '_') then -- filter out prefixes
95f6f43178ed test/callback_suite simplifications:
Tassilo Philipp
parents: 509
diff changeset
19 i = i + 1
95f6f43178ed test/callback_suite simplifications:
Tassilo Philipp
parents: 509
diff changeset
20 else
518
a0ff5dff090b - callback_suite: generator simplification and removal of pointless lua local var declarations
Tassilo Philipp
parents: 516
diff changeset
21 args[#args+1] = c
513
95f6f43178ed test/callback_suite simplifications:
Tassilo Philipp
parents: 509
diff changeset
22 end
95f6f43178ed test/callback_suite simplifications:
Tassilo Philipp
parents: 509
diff changeset
23 i = i + 1
505
049e04af13c8 test/callback_suite:
Tassilo Philipp
parents:
diff changeset
24 end
513
95f6f43178ed test/callback_suite simplifications:
Tassilo Philipp
parents: 509
diff changeset
25 return "F" .. (#args-1) .. "(f" .. id .. "," .. table.concat(args,',') .. ")\n"
505
049e04af13c8 test/callback_suite:
Tassilo Philipp
parents:
diff changeset
26 end
049e04af13c8 test/callback_suite:
Tassilo Philipp
parents:
diff changeset
27
049e04af13c8 test/callback_suite:
Tassilo Philipp
parents:
diff changeset
28 function mkall()
049e04af13c8 test/callback_suite:
Tassilo Philipp
parents:
diff changeset
29 -- case macros
049e04af13c8 test/callback_suite:
Tassilo Philipp
parents:
diff changeset
30 for i = minargs, maxargs do
049e04af13c8 test/callback_suite:
Tassilo Philipp
parents:
diff changeset
31 local line = "#define F" .. i .. "(ID,R"
518
a0ff5dff090b - callback_suite: generator simplification and removal of pointless lua local var declarations
Tassilo Philipp
parents: 516
diff changeset
32 local argdef = { }
a0ff5dff090b - callback_suite: generator simplification and removal of pointless lua local var declarations
Tassilo Philipp
parents: 516
diff changeset
33 local argset = { }
505
049e04af13c8 test/callback_suite:
Tassilo Philipp
parents:
diff changeset
34 if i > 0 then
049e04af13c8 test/callback_suite:
Tassilo Philipp
parents:
diff changeset
35 line = line .. ","
049e04af13c8 test/callback_suite:
Tassilo Philipp
parents:
diff changeset
36 for j = 0, i-1 do
518
a0ff5dff090b - callback_suite: generator simplification and removal of pointless lua local var declarations
Tassilo Philipp
parents: 516
diff changeset
37 argdef[#argdef+1] = "M" .. j
a0ff5dff090b - callback_suite: generator simplification and removal of pointless lua local var declarations
Tassilo Philipp
parents: 516
diff changeset
38 argset[#argset+1] = "K_##M" .. j .. "[" .. j .. "]"
505
049e04af13c8 test/callback_suite:
Tassilo Philipp
parents:
diff changeset
39 end
049e04af13c8 test/callback_suite:
Tassilo Philipp
parents:
diff changeset
40 end
518
a0ff5dff090b - callback_suite: generator simplification and removal of pointless lua local var declarations
Tassilo Philipp
parents: 516
diff changeset
41 line = line .. table.concat(argdef,",") .. ") void ID(void* addr) { write_V_##R(" .. i .. ", ((" .. api .. " R(*)(" .. table.concat(argdef,",") .. "))addr)(" .. table.concat(argset,",") .. "));}\n"
505
049e04af13c8 test/callback_suite:
Tassilo Philipp
parents:
diff changeset
42 io.write(line)
049e04af13c8 test/callback_suite:
Tassilo Philipp
parents:
diff changeset
43 end
049e04af13c8 test/callback_suite:
Tassilo Philipp
parents:
diff changeset
44
049e04af13c8 test/callback_suite:
Tassilo Philipp
parents:
diff changeset
45 -- cases
049e04af13c8 test/callback_suite:
Tassilo Philipp
parents:
diff changeset
46 local lineno = 0
049e04af13c8 test/callback_suite:
Tassilo Philipp
parents:
diff changeset
47 local sigtab = { }
049e04af13c8 test/callback_suite:
Tassilo Philipp
parents:
diff changeset
48 local cases = ''
049e04af13c8 test/callback_suite:
Tassilo Philipp
parents:
diff changeset
49 for line in io.lines() do
049e04af13c8 test/callback_suite:
Tassilo Philipp
parents:
diff changeset
50 local sig = trim(line)
049e04af13c8 test/callback_suite:
Tassilo Philipp
parents:
diff changeset
51 cases = cases..mkcase(lineno,sig)
049e04af13c8 test/callback_suite:
Tassilo Philipp
parents:
diff changeset
52 sigtab[#sigtab+1] = sig
049e04af13c8 test/callback_suite:
Tassilo Philipp
parents:
diff changeset
53 lineno = lineno + 1
049e04af13c8 test/callback_suite:
Tassilo Philipp
parents:
diff changeset
54 end
049e04af13c8 test/callback_suite:
Tassilo Philipp
parents:
diff changeset
55
049e04af13c8 test/callback_suite:
Tassilo Philipp
parents:
diff changeset
56 io.write(cases)
513
95f6f43178ed test/callback_suite simplifications:
Tassilo Philipp
parents: 509
diff changeset
57 io.write(mkfuntab(lineno, 'f', 'funptr', 'G_funtab', false))
95f6f43178ed test/callback_suite simplifications:
Tassilo Philipp
parents: 509
diff changeset
58 io.write(mksigtab(sigtab, ccprefix, 'G_sigtab'))
505
049e04af13c8 test/callback_suite:
Tassilo Philipp
parents:
diff changeset
59 io.write("int G_maxargs = "..maxargs..";\n")
049e04af13c8 test/callback_suite:
Tassilo Philipp
parents:
diff changeset
60 end
049e04af13c8 test/callback_suite:
Tassilo Philipp
parents:
diff changeset
61
049e04af13c8 test/callback_suite:
Tassilo Philipp
parents:
diff changeset
62 mkall()
049e04af13c8 test/callback_suite:
Tassilo Philipp
parents:
diff changeset
63