annotate test/callback_suite/make-invoke-macros.lua @ 487:d8f0e6cecdab

- simplified test/callback_suite
author Tassilo Philipp
date Fri, 18 Mar 2022 09:47:18 +0100
parents 3e629dc19168
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
1 require "config"
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
2 if mode == "ordered" then
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
3 minargs = 0
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
4 end
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
5 local i
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
6 for i = minargs, maxargs do
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
7 local line = "#define F" .. i .. "(ID,R"
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
8 local argdef = ""
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
9 local argset = ""
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
10 if i > 0 then
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
11 line = line .. ","
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
12 local j
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
13 for j = 0, i-1 do
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
14 if j > 0 then
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
15 argdef = argdef .. ","
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
16 argset = argset .. ","
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
17 end
487
d8f0e6cecdab - simplified test/callback_suite
Tassilo Philipp
parents: 0
diff changeset
18 argdef = argdef .. "M" .. j
d8f0e6cecdab - simplified test/callback_suite
Tassilo Philipp
parents: 0
diff changeset
19 argset = argset .. "M[" .. j .. "].M" .. j
0
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
20 end
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
21 end
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
22 line = line .. argdef .. ") void ID(void* addr) { Result.R = ((CONFIG_API R(*)(" .. argdef .. "))addr)(" .. argset .. ");}\n"
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
23 io.write(line)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
24 end
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
25 io.flush()
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
26
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
27