Mercurial > pub > dyncall > dyncall
comparison test/call_suite_aggrs/mk-cases.lua @ 496:da5232da6270
- test code: rand-sig now spitting out dyncallish sigs (with ')' end delim and rettype at end), purely for consistency
author | Tassilo Philipp |
---|---|
date | Mon, 21 Mar 2022 18:11:38 +0100 |
parents | 0c68b3f91367 |
children | 7426cfbe92d5 |
comparison
equal
deleted
inserted
replaced
495:45ac093ca822 | 496:da5232da6270 |
---|---|
13 return c..'A'..t:sub(2) | 13 return c..'A'..t:sub(2) |
14 end | 14 end |
15 return t | 15 return t |
16 end | 16 end |
17 | 17 |
18 function put_sig_rtype_first(sig) | |
19 return sig:sub(sig:find(')')+1,-1)..sig:sub(1,sig:find(')')-1) | |
20 end | |
21 | |
22 | |
18 function trim(l) return l:gsub("^%s+",""):gsub("%s+$","") end | 23 function trim(l) return l:gsub("^%s+",""):gsub("%s+$","") end |
19 function mkcase(id,sig) | 24 function mkcase(id,sig) |
20 local sig = trim(sig) | 25 local sig = trim(sig) |
26 local fsig = put_sig_rtype_first(sig) | |
21 local h = { "/* ",id,":",sig," */ " } | 27 local h = { "/* ",id,":",sig," */ " } |
22 local t = { "" } | 28 local t = { "" } |
23 local pos = 0 | 29 local pos = 0 |
24 local n_nest = 0 | 30 local n_nest = 0 |
25 local aggr = { } | 31 local aggr = { } |
26 local aggr_sig = { } | 32 local aggr_sig = { } |
27 aggr[0] = { } -- non-sequential [0] collects all non-aggr types | 33 aggr[0] = { } -- non-sequential [0] collects all non-aggr types |
28 aggr_sig[0] = '' | 34 aggr_sig[0] = '' |
29 for i = 1, #sig do | 35 for i = 1, #fsig do |
30 local name = "a"..pos | 36 local name = "a"..pos |
31 local ch = sig:sub(i,i) | 37 local ch = fsig:sub(i,i) |
32 | 38 |
33 | 39 |
34 -- aggregate nest level change? | 40 -- aggregate nest level change? |
35 if ch == '{' or ch == '<' then | 41 if ch == '{' or ch == '<' then |
36 n_nest = n_nest + 1 | 42 n_nest = n_nest + 1 |
138 local sigtab = { } | 144 local sigtab = { } |
139 local cases = '' | 145 local cases = '' |
140 for line in io.lines() do | 146 for line in io.lines() do |
141 local sig = trim(line) | 147 local sig = trim(line) |
142 cases = cases..mkcase(lineno,sig) | 148 cases = cases..mkcase(lineno,sig) |
143 sigtab[#sigtab+1] = sig | 149 sigtab[#sigtab+1] = put_sig_rtype_first(sig) |
144 lineno = lineno + 1 | 150 lineno = lineno + 1 |
145 end | 151 end |
146 | 152 |
147 agg_sizes = {} | 153 agg_sizes = {} |
148 agg_sigs = {} | 154 agg_sigs = {} |