Mercurial > pub > dyncall > dyncall
comparison test/plain/test_main.c @ 627:c477ddd64718 r1.4-RC5
- test/plain:
* added some aggregate-by-val-as-vararg cases
* made output be more in line w/ sig format
author | Tassilo Philipp |
---|---|
date | Fri, 28 Oct 2022 15:08:21 +0200 |
parents | 71c884e610f0 |
children | a388de1c822e |
comparison
equal
deleted
inserted
replaced
626:667fe7b2be62 | 627:c477ddd64718 |
---|---|
69 { | 69 { |
70 DCbool r, val=DC_TRUE; | 70 DCbool r, val=DC_TRUE; |
71 dcReset(pc); | 71 dcReset(pc); |
72 dcArgBool(pc, val); | 72 dcArgBool(pc, val); |
73 r = dcCallBool(pc, (DCpointer) &fun_c_b); | 73 r = dcCallBool(pc, (DCpointer) &fun_c_b); |
74 printf("bt (cdecl): %d\n", (r == val)); | 74 printf("b)b == t (cdecl): %d\n", (r == val)); |
75 ret = (r == val) && ret; | 75 ret = (r == val) && ret; |
76 | 76 |
77 val=DC_FALSE; | 77 val=DC_FALSE; |
78 dcReset(pc); | 78 dcReset(pc); |
79 dcArgBool(pc, val); | 79 dcArgBool(pc, val); |
80 r = dcCallBool(pc, (DCpointer) &fun_c_b); | 80 r = dcCallBool(pc, (DCpointer) &fun_c_b); |
81 printf("bf (cdecl): %d\n", (r == val)); | 81 printf("b)b == f (cdecl): %d\n", (r == val)); |
82 ret = (r == val) && ret; | 82 ret = (r == val) && ret; |
83 } | 83 } |
84 /* int */ | 84 /* int */ |
85 { | 85 { |
86 DCint r, val=1234; | 86 DCint r, val=1234; |
87 dcReset(pc); | 87 dcReset(pc); |
88 dcArgInt(pc, val); | 88 dcArgInt(pc, val); |
89 r = dcCallInt(pc, (DCpointer) &fun_c_i); | 89 r = dcCallInt(pc, (DCpointer) &fun_c_i); |
90 printf("i (cdecl): %d\n", (r == val)); | 90 printf("i)i (cdecl): %d\n", (r == val)); |
91 ret = (r == val) && ret; | 91 ret = (r == val) && ret; |
92 } | 92 } |
93 /* long */ | 93 /* long */ |
94 { | 94 { |
95 DClong r, val=(DClong) 0xCAFEBABEL; | 95 DClong r, val=(DClong) 0xCAFEBABEL; |
96 dcReset(pc); | 96 dcReset(pc); |
97 dcArgLong(pc, val); | 97 dcArgLong(pc, val); |
98 r = dcCallLong(pc, (DCpointer) &fun_c_j); | 98 r = dcCallLong(pc, (DCpointer) &fun_c_j); |
99 printf("l (cdecl): %d\n", (r == val)); | 99 printf("j)j (cdecl): %d\n", (r == val)); |
100 ret = (r == val) && ret; | 100 ret = (r == val) && ret; |
101 } | 101 } |
102 /* long long */ | 102 /* long long */ |
103 { | 103 { |
104 DClonglong r, val=(DClonglong) 0xCAFEBABEDEADC0DELL; | 104 DClonglong r, val=(DClonglong) 0xCAFEBABEDEADC0DELL; |
105 dcReset(pc); | 105 dcReset(pc); |
106 dcArgLongLong(pc, val); | 106 dcArgLongLong(pc, val); |
107 r = dcCallLongLong(pc, (DCpointer) &fun_c_l); | 107 r = dcCallLongLong(pc, (DCpointer) &fun_c_l); |
108 printf("ll (cdecl): %d\n", (r == (DClonglong)val)); | 108 printf("l)l (cdecl): %d\n", (r == (DClonglong)val)); |
109 ret = (r == (DClonglong)val) && ret; | 109 ret = (r == (DClonglong)val) && ret; |
110 } | 110 } |
111 /* float */ | 111 /* float */ |
112 { | 112 { |
113 DCfloat r, val=1.234567f; | 113 DCfloat r, val=1.234567f; |
114 dcReset(pc); | 114 dcReset(pc); |
115 dcArgFloat(pc, val); | 115 dcArgFloat(pc, val); |
116 r = dcCallFloat(pc, (DCpointer) &fun_c_f); | 116 r = dcCallFloat(pc, (DCpointer) &fun_c_f); |
117 printf("f (cdecl): %d\n", (r == val)); | 117 printf("f)f (cdecl): %d\n", (r == val)); |
118 ret = (r == val) && ret; | 118 ret = (r == val) && ret; |
119 } | 119 } |
120 /* double */ | 120 /* double */ |
121 { | 121 { |
122 DCdouble r, val=1.23456789; | 122 DCdouble r, val=1.23456789; |
123 dcReset(pc); | 123 dcReset(pc); |
124 dcArgDouble(pc, val); | 124 dcArgDouble(pc, val); |
125 r = dcCallDouble(pc, (DCpointer) &fun_c_d); | 125 r = dcCallDouble(pc, (DCpointer) &fun_c_d); |
126 printf("d (cdecl): %d\n", (r == val)); | 126 printf("d)d (cdecl): %d\n", (r == val)); |
127 ret = (r == val) && ret; | 127 ret = (r == val) && ret; |
128 } | 128 } |
129 /* ptr */ | 129 /* ptr */ |
130 { | 130 { |
131 DCpointer r; | 131 DCpointer r; |
132 dcReset(pc); | 132 dcReset(pc); |
133 dcArgPointer(pc, (DCpointer) &fun_c_b); | 133 dcArgPointer(pc, (DCpointer) &fun_c_b); |
134 r = dcCallPointer(pc, (DCpointer) &fun_c_p); | 134 r = dcCallPointer(pc, (DCpointer) &fun_c_p); |
135 printf("p (cdecl): %d\n", (r == (DCpointer) &fun_c_b)); | 135 printf("p)p (cdecl): %d\n", (r == (DCpointer) &fun_c_b)); |
136 ret = (r == (DCpointer) &fun_c_b) && ret; | 136 ret = (r == (DCpointer) &fun_c_b) && ret; |
137 } | 137 } |
138 dcFree(pc); | 138 dcFree(pc); |
139 | 139 |
140 return ret; | 140 return ret; |
161 { | 161 { |
162 DCbool r, val=DC_TRUE; | 162 DCbool r, val=DC_TRUE; |
163 dcReset(pc); | 163 dcReset(pc); |
164 dcArgBool(pc, val); | 164 dcArgBool(pc, val); |
165 r = dcCallBool(pc, (DCpointer) &fun_std_b); | 165 r = dcCallBool(pc, (DCpointer) &fun_std_b); |
166 printf("bt (stdcall): %d\n", (r == val)); | 166 printf("b)b == t (stdcall): %d\n", (r == val)); |
167 ret = (r == val) && ret; | 167 ret = (r == val) && ret; |
168 | 168 |
169 val=DC_FALSE; | 169 val=DC_FALSE; |
170 dcReset(pc); | 170 dcReset(pc); |
171 dcArgBool(pc, val); | 171 dcArgBool(pc, val); |
172 r = dcCallBool(pc, (DCpointer) &fun_std_b); | 172 r = dcCallBool(pc, (DCpointer) &fun_std_b); |
173 printf("bf (stdcall): %d\n", (r == val)); | 173 printf("b)b == f (stdcall): %d\n", (r == val)); |
174 ret = (r == val) && ret; | 174 ret = (r == val) && ret; |
175 } | 175 } |
176 /* int */ | 176 /* int */ |
177 { | 177 { |
178 DCint r, val=1234; | 178 DCint r, val=1234; |
179 dcReset(pc); | 179 dcReset(pc); |
180 dcArgInt(pc, val); | 180 dcArgInt(pc, val); |
181 r = dcCallInt(pc, (DCpointer) &fun_std_i); | 181 r = dcCallInt(pc, (DCpointer) &fun_std_i); |
182 printf("i (stdcall): %d\n", (r == val)); | 182 printf("i)i (stdcall): %d\n", (r == val)); |
183 ret = (r == val) && ret; | 183 ret = (r == val) && ret; |
184 } | 184 } |
185 /* long */ | 185 /* long */ |
186 { | 186 { |
187 DClong r, val=0xCAFEBABEUL; | 187 DClong r, val=0xCAFEBABEUL; |
188 dcReset(pc); | 188 dcReset(pc); |
189 dcArgLong(pc, val); | 189 dcArgLong(pc, val); |
190 r = dcCallLong(pc, (DCpointer) &fun_std_j); | 190 r = dcCallLong(pc, (DCpointer) &fun_std_j); |
191 printf("l (stdcall): %d\n", (r == val)); | 191 printf("j)j (stdcall): %d\n", (r == val)); |
192 ret = (r == val) && ret; | 192 ret = (r == val) && ret; |
193 } | 193 } |
194 /* long long */ | 194 /* long long */ |
195 { | 195 { |
196 DClonglong r, val=0xCAFEBABEDEADC0DEULL; | 196 DClonglong r, val=0xCAFEBABEDEADC0DEULL; |
197 dcReset(pc); | 197 dcReset(pc); |
198 dcArgLongLong(pc, val); | 198 dcArgLongLong(pc, val); |
199 r = dcCallLongLong(pc, (DCpointer) &fun_std_l); | 199 r = dcCallLongLong(pc, (DCpointer) &fun_std_l); |
200 printf("ll (stdcall): %d\n", (r == val)); | 200 printf("l)l (stdcall): %d\n", (r == val)); |
201 ret = (r == val) && ret; | 201 ret = (r == val) && ret; |
202 } | 202 } |
203 /* float */ | 203 /* float */ |
204 { | 204 { |
205 DCfloat r, val=1.234567f; | 205 DCfloat r, val=1.234567f; |
206 dcReset(pc); | 206 dcReset(pc); |
207 dcArgFloat(pc, val); | 207 dcArgFloat(pc, val); |
208 r = dcCallFloat(pc, (DCpointer) &fun_std_f); | 208 r = dcCallFloat(pc, (DCpointer) &fun_std_f); |
209 printf("f (stdcall): %d\n", (r == val)); | 209 printf("f)f (stdcall): %d\n", (r == val)); |
210 ret = (r == val) && ret; | 210 ret = (r == val) && ret; |
211 } | 211 } |
212 /* double */ | 212 /* double */ |
213 { | 213 { |
214 DCdouble r, val=1.23456789; | 214 DCdouble r, val=1.23456789; |
215 dcReset(pc); | 215 dcReset(pc); |
216 dcArgDouble(pc, val); | 216 dcArgDouble(pc, val); |
217 r = dcCallDouble(pc, (DCpointer) &fun_std_d); | 217 r = dcCallDouble(pc, (DCpointer) &fun_std_d); |
218 printf("d (stdcall): %d\n", (r == val)); | 218 printf("d)d (stdcall): %d\n", (r == val)); |
219 ret = (r == val) && ret; | 219 ret = (r == val) && ret; |
220 } | 220 } |
221 /* ptr */ | 221 /* ptr */ |
222 { | 222 { |
223 DCpointer r; | 223 DCpointer r; |
224 dcReset(pc); | 224 dcReset(pc); |
225 dcArgPointer(pc, (DCpointer) &fun_c_b); | 225 dcArgPointer(pc, (DCpointer) &fun_c_b); |
226 r = dcCallPointer(pc, (DCpointer) &fun_std_p); | 226 r = dcCallPointer(pc, (DCpointer) &fun_std_p); |
227 printf("p (stdcall): %d\n", (r == &fun_c_b)); | 227 printf("p)p (stdcall): %d\n", (r == &fun_c_b)); |
228 ret = (r == &fun_c_b) && ret; | 228 ret = (r == &fun_c_b) && ret; |
229 } | 229 } |
230 dcFree(pc); | 230 dcFree(pc); |
231 | 231 |
232 return ret; | 232 return ret; |
261 { | 261 { |
262 DCbool r, val=DC_TRUE; | 262 DCbool r, val=DC_TRUE; |
263 dcReset(pc); | 263 dcReset(pc); |
264 dcArgBool(pc, val); | 264 dcArgBool(pc, val); |
265 r = dcCallBool(pc, (DCpointer) &fun_fast_b); | 265 r = dcCallBool(pc, (DCpointer) &fun_fast_b); |
266 printf("bt ("FT"fastcall): %d\n", (r == val)); | 266 printf("b)b == t ("FT"fastcall): %d\n", (r == val)); |
267 ret = (r == val) && ret; | 267 ret = (r == val) && ret; |
268 | 268 |
269 val=DC_FALSE; | 269 val=DC_FALSE; |
270 dcReset(pc); | 270 dcReset(pc); |
271 dcArgBool(pc, val); | 271 dcArgBool(pc, val); |
272 r = dcCallBool(pc, (DCpointer) &fun_fast_b); | 272 r = dcCallBool(pc, (DCpointer) &fun_fast_b); |
273 printf("bf ("FT"fastcall): %d\n", (r == val)); | 273 printf("b)b == f ("FT"fastcall): %d\n", (r == val)); |
274 ret = (r == val) && ret; | 274 ret = (r == val) && ret; |
275 } | 275 } |
276 /* int */ | 276 /* int */ |
277 { | 277 { |
278 DCint r, val=1234; | 278 DCint r, val=1234; |
279 dcReset(pc); | 279 dcReset(pc); |
280 dcArgInt(pc, val); | 280 dcArgInt(pc, val); |
281 r = dcCallInt(pc, (DCpointer) &fun_fast_i); | 281 r = dcCallInt(pc, (DCpointer) &fun_fast_i); |
282 printf("i ("FT"fastcall): %d\n", (r == val)); | 282 printf("i)i ("FT"fastcall): %d\n", (r == val)); |
283 ret = (r == val) && ret; | 283 ret = (r == val) && ret; |
284 } | 284 } |
285 /* long */ | 285 /* long */ |
286 { | 286 { |
287 DClong r, val=0xCAFEBABEUL; | 287 DClong r, val=0xCAFEBABEUL; |
288 dcReset(pc); | 288 dcReset(pc); |
289 dcArgLong(pc, val); | 289 dcArgLong(pc, val); |
290 r = dcCallLong(pc, (DCpointer) &fun_fast_j); | 290 r = dcCallLong(pc, (DCpointer) &fun_fast_j); |
291 printf("l ("FT"fastcall): %d\n", (r == val)); | 291 printf("j)j ("FT"fastcall): %d\n", (r == val)); |
292 ret = (r == val) && ret; | 292 ret = (r == val) && ret; |
293 } | 293 } |
294 /* long long */ | 294 /* long long */ |
295 { | 295 { |
296 DClonglong r, val=0xCAFEBABEDEADC0DEULL; | 296 DClonglong r, val=0xCAFEBABEDEADC0DEULL; |
297 dcReset(pc); | 297 dcReset(pc); |
298 dcArgLongLong(pc, val); | 298 dcArgLongLong(pc, val); |
299 r = dcCallLongLong(pc, (DCpointer) &fun_fast_l); | 299 r = dcCallLongLong(pc, (DCpointer) &fun_fast_l); |
300 printf("ll ("FT"fastcall): %d\n", (r == val)); | 300 printf("l)l ("FT"fastcall): %d\n", (r == val)); |
301 ret = (r == val) && ret; | 301 ret = (r == val) && ret; |
302 } | 302 } |
303 /* float */ | 303 /* float */ |
304 { | 304 { |
305 DCfloat r, val=1.234567f; | 305 DCfloat r, val=1.234567f; |
306 dcReset(pc); | 306 dcReset(pc); |
307 dcArgFloat(pc, val); | 307 dcArgFloat(pc, val); |
308 r = dcCallFloat(pc, (DCpointer) &fun_fast_f); | 308 r = dcCallFloat(pc, (DCpointer) &fun_fast_f); |
309 printf("f ("FT"fastcall): %d\n", (r == val)); | 309 printf("f)f ("FT"fastcall): %d\n", (r == val)); |
310 ret = (r == val) && ret; | 310 ret = (r == val) && ret; |
311 } | 311 } |
312 /* double */ | 312 /* double */ |
313 { | 313 { |
314 DCdouble r, val=1.23456789; | 314 DCdouble r, val=1.23456789; |
315 dcReset(pc); | 315 dcReset(pc); |
316 dcArgDouble(pc, val); | 316 dcArgDouble(pc, val); |
317 r = dcCallDouble(pc, (DCpointer) &fun_fast_d); | 317 r = dcCallDouble(pc, (DCpointer) &fun_fast_d); |
318 printf("d ("FT"fastcall): %d\n", (r == val)); | 318 printf("d)d ("FT"fastcall): %d\n", (r == val)); |
319 ret = (r == val) && ret; | 319 ret = (r == val) && ret; |
320 } | 320 } |
321 /* ptr */ | 321 /* ptr */ |
322 { | 322 { |
323 DCpointer r; | 323 DCpointer r; |
324 dcReset(pc); | 324 dcReset(pc); |
325 dcArgPointer(pc, (DCpointer) &fun_c_b); | 325 dcArgPointer(pc, (DCpointer) &fun_c_b); |
326 r = dcCallPointer(pc, (DCpointer) &fun_fast_p); | 326 r = dcCallPointer(pc, (DCpointer) &fun_fast_p); |
327 printf("p ("FT"fastcall): %d\n", (r == &fun_c_b)); | 327 printf("p)p ("FT"fastcall): %d\n", (r == &fun_c_b)); |
328 ret = (r == &fun_c_b) && ret; | 328 ret = (r == &fun_c_b) && ret; |
329 } | 329 } |
330 dcFree(pc); | 330 dcFree(pc); |
331 | 331 |
332 return ret; | 332 return ret; |