source: trunk/include/odinwrap.h@ 6997

Last change on this file since 6997 was 6997, checked in by phaller, 24 years ago

Standard C compatibility

File size: 58.0 KB
Line 
1/*
2 * Project Odin Software License can be found in LICENSE.TXT
3 *
4 * ODIN FS: Selector function wrapper macros
5 *
6 * Copyright 1999 Patrick Haller
7 *
8 */
9
10
11#ifndef _ODINWRAP_H_
12#define _ODINWRAP_H_
13
14#include <os2sel.h>
15
16/****************************************************************************
17 * Defines *
18 ****************************************************************************/
19
20// override debugging
21//#undef DEBUG
22//#define DEBUG
23
24// override profiling
25//#undef PROFILE
26//#define PROFILE
27
28
29
30#define ODIN_INTERNAL _Optlink
31
32
33#ifdef DEBUG
34# define ODINDEBUGCHANNEL(a) static char* pszOdinDebugChannel=#a;
35# define ODINDEBUGCHANNEL1(a) static char* pszOdinDebugChannel1=#a;
36#else
37# define ODINDEBUGCHANNEL(a)
38# define ODINDEBUGCHANNEL1(a)
39#endif
40
41
42//SvL: Define this to use the internal wrapper function of a specific api
43#ifdef DEBUG
44#define ODIN_EXTERN(a) ODIN_INTERNAL ODIN_##a
45#define CALL_ODINFUNC(a) ODIN_##a
46#else
47#define ODIN_EXTERN(a) ODIN_INTERNAL a
48#define CALL_ODINFUNC(a) a
49#endif
50
51
52#ifdef DEBUG
53
54//@@@PH 1999/10/25 IBM VAC++ debug memory support
55#include <malloc.h>
56#include <odin.h>
57
58// ---------------------------------------------------------------------------
59#ifdef __WATCOMC__
60//this doens't work with watcom because doubly declared somewhere :-(
61//extern unsigned long int WIN32API GetCurrentThreadId(void); // kernel32
62#else
63extern unsigned long int WIN32API GetCurrentThreadId(void); // kernel32
64#endif
65extern unsigned long int WIN32API dbg_GetThreadCallDepth(void); // kernel32
66extern void WIN32API dbg_IncThreadCallDepth(void); // kernel32
67extern void WIN32API dbg_DecThreadCallDepth(void); // kernel32
68
69// ---------------------------------------------------------------------------
70//SvL: Only check the heap very frequently when there are problems
71//#define DEBUG_ODINHEAP
72#ifdef DEBUG_ODINHEAP
73#define ODIN_HEAPCHECK() _heap_check()
74#else
75#define ODIN_HEAPCHECK()
76#endif
77
78
79// ---------------------------------------------------------------------------
80// PH: this is for profiling cumulative method call times
81#ifdef PROFILE
82
83# define PROFILE_START(a) \
84 LARGE_INTEGER liStart; \
85 LARGE_INTEGER liEnd; \
86 unsigned long ulElapsed; \
87 QueryPerformanceCounter(&liStart);
88
89
90# define PROFILE_STOP(a) \
91 QueryPerformanceCounter(&liEnd);\
92 if (liStart.LowPart > liEnd.LowPart) \
93 ulElapsed = 0xFFFFFFFF - liStart.LowPart + liEnd.LowPart; \
94 else \
95 ulElapsed = liEnd.LowPart - liStart.LowPart; \
96 \
97 dprintf(("%s: %s %u ticks\n",\
98 pszOdinDebugChannel,\
99 a, \
100 ulElapsed));
101#else
102# define PROFILE_START(a)
103# define PROFILE_STOP(a)
104#endif
105
106#define FNINIT \
107 unsigned short sel;
108
109#define FNPROLOGUE(a) \
110 sel = GetFS(); \
111 dbg_IncThreadCallDepth(); \
112 ODIN_HEAPCHECK(); \
113 PROFILE_START(a)
114
115#define FNEPILOGUE(a) \
116 PROFILE_STOP(a) \
117 ODIN_HEAPCHECK(); \
118 dbg_DecThreadCallDepth(); \
119 if (sel != GetFS()) { \
120 SetFS(sel); \
121 dprintf(("WARNING: FS: for thread %08xh corrupted by "a, GetCurrentThreadId())); \
122 }
123
124
125/****************************************************************************
126 * General Wrapper Macros (debug instrumented) *
127 ****************************************************************************/
128
129/* ---------- 0 parameters ---------- */
130#define ODINFUNCTION0(cRet,cName) \
131 cRet ODIN_INTERNAL ODIN_##cName (void); \
132 cRet WINAPI cName(void) \
133 { \
134 FNINIT \
135 cRet rc; \
136 dprintf(("%s: "#cRet" "#cName"()", \
137 pszOdinDebugChannel)); \
138 FNPROLOGUE(#cName) \
139 rc = ODIN_##cName(); \
140 FNEPILOGUE(#cName) \
141 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
142 pszOdinDebugChannel, \
143 rc)); \
144 return rc; \
145 } \
146 \
147 cRet ODIN_INTERNAL ODIN_##cName (void)
148
149
150#define ODINPROCEDURE0(cName) \
151 void ODIN_INTERNAL ODIN_##cName (void); \
152 void WINAPI cName(void) \
153 { \
154 FNINIT \
155 dprintf(("%s: void "#cName"()", \
156 pszOdinDebugChannel)); \
157 FNPROLOGUE(#cName) \
158 ODIN_##cName(); \
159 FNEPILOGUE(#cName) \
160 dprintf(("%s: void "#cName"() leave\n", \
161 pszOdinDebugChannel)); \
162 } \
163 \
164 void ODIN_INTERNAL ODIN_##cName (void)
165
166
167/* ---------- 1 parameters ---------- */
168#define ODINFUNCTION1(cRet,cName,t1,a1) \
169 cRet ODIN_INTERNAL ODIN_##cName (t1 a1); \
170 cRet WINAPI cName(t1 a1) \
171 { \
172 FNINIT \
173 cRet rc; \
174 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh)", \
175 pszOdinDebugChannel, \
176 a1)); \
177 FNPROLOGUE(#cName) \
178 rc = ODIN_##cName(a1); \
179 FNEPILOGUE(#cName) \
180 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
181 pszOdinDebugChannel, \
182 rc)); \
183 return rc; \
184 } \
185 \
186 cRet ODIN_INTERNAL ODIN_##cName (t1 a1)
187
188#define ODINPROCEDURE1(cName,t1,a1) \
189 void ODIN_INTERNAL ODIN_##cName (t1 a1); \
190 void WINAPI cName(t1 a1) \
191 { \
192 FNINIT \
193 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh)", \
194 pszOdinDebugChannel, \
195 a1)); \
196 FNPROLOGUE(#cName) \
197 ODIN_##cName(a1); \
198 FNEPILOGUE(#cName) \
199 dprintf(("%s: void "#cName"() leave\n", \
200 pszOdinDebugChannel)); \
201 } \
202 \
203 void ODIN_INTERNAL ODIN_##cName (t1 a1)
204
205
206/* ---------- 2 parameters ---------- */
207#define ODINFUNCTION2(cRet,cName,t1,a1,t2,a2) \
208 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2); \
209 cRet WINAPI cName(t1 a1,t2 a2) \
210 { \
211 FNINIT \
212 cRet rc; \
213 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh)", \
214 pszOdinDebugChannel, \
215 a1,a2)); \
216 FNPROLOGUE(#cName) \
217 rc = ODIN_##cName(a1,a2); \
218 FNEPILOGUE(#cName) \
219 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
220 pszOdinDebugChannel, \
221 rc)); \
222 return rc; \
223 } \
224 \
225 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2)
226
227#define ODINPROCEDURE2(cName,t1,a1,t2,a2) \
228 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2); \
229 void WINAPI cName(t1 a1,t2 a2) \
230 { \
231 FNINIT \
232 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh)", \
233 pszOdinDebugChannel, \
234 a1,a2)); \
235 FNPROLOGUE(#cName) \
236 ODIN_##cName(a1,a2); \
237 FNEPILOGUE(#cName) \
238 dprintf(("%s: void "#cName"() leave\n", \
239 pszOdinDebugChannel)); \
240 } \
241 \
242 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2)
243
244
245/* ---------- 3 parameters ---------- */
246#define ODINFUNCTION3(cRet,cName,t1,a1,t2,a2,t3,a3) \
247 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3); \
248 cRet WINAPI cName(t1 a1,t2 a2,t3 a3) \
249 { \
250 FNINIT \
251 cRet rc; \
252 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)", \
253 pszOdinDebugChannel, \
254 a1,a2,a3)); \
255 FNPROLOGUE(#cName) \
256 rc = ODIN_##cName(a1,a2,a3); \
257 FNEPILOGUE(#cName) \
258 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
259 pszOdinDebugChannel, \
260 rc)); \
261 return rc; \
262 } \
263 \
264 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3)
265
266#define ODINPROCEDURE3(cName,t1,a1,t2,a2,t3,a3) \
267 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3); \
268 void WINAPI cName(t1 a1,t2 a2,t3 a3) \
269 { \
270 FNINIT \
271 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)", \
272 pszOdinDebugChannel, \
273 a1,a2,a3)); \
274 FNPROLOGUE(#cName) \
275 ODIN_##cName(a1,a2,a3); \
276 FNEPILOGUE(#cName) \
277 dprintf(("%s: void "#cName"() leave\n", \
278 pszOdinDebugChannel)); \
279 } \
280 \
281 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3)
282
283
284/* ---------- 4 parameters ---------- */
285#define ODINFUNCTION4(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4) \
286 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4); \
287 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4) \
288 { \
289 FNINIT \
290 cRet rc; \
291 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh, "#t4" "#a4"=%08xh)", \
292 pszOdinDebugChannel, \
293 a1,a2,a3,a4)); \
294 FNPROLOGUE(#cName) \
295 rc = ODIN_##cName(a1,a2,a3,a4); \
296 FNEPILOGUE(#cName) \
297 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
298 pszOdinDebugChannel, \
299 rc)); \
300 return rc; \
301 } \
302 \
303 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4)
304
305#define ODINPROCEDURE4(cName,t1,a1,t2,a2,t3,a3,t4,a4) \
306 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4); \
307 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4) \
308 { \
309 FNINIT \
310 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh, "#t4" "#a4"=%08xh)", \
311 pszOdinDebugChannel, \
312 a1,a2,a3,a4)); \
313 FNPROLOGUE(#cName) \
314 ODIN_##cName(a1,a2,a3,a4); \
315 FNEPILOGUE(#cName) \
316 dprintf(("%s: void "#cName"() leave\n", \
317 pszOdinDebugChannel)); \
318 } \
319 \
320 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4)
321
322
323/* ---------- 5 parameters ---------- */
324#define ODINFUNCTION5(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5) \
325 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5); \
326 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5) \
327 { \
328 FNINIT \
329 cRet rc; \
330 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh" \
331 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh)", \
332 pszOdinDebugChannel, \
333 a1,a2,a3,a4,a5)); \
334 FNPROLOGUE(#cName) \
335 rc = ODIN_##cName(a1,a2,a3,a4,a5); \
336 FNEPILOGUE(#cName) \
337 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
338 pszOdinDebugChannel, \
339 rc)); \
340 return rc; \
341 } \
342 \
343 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5)
344
345#define ODINPROCEDURE5(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5) \
346 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5); \
347 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5) \
348 { \
349 FNINIT \
350 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
351 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh)", \
352 pszOdinDebugChannel, \
353 a1,a2,a3,a4,a5)); \
354 FNPROLOGUE(#cName) \
355 ODIN_##cName(a1,a2,a3,a4,a5); \
356 FNEPILOGUE(#cName) \
357 dprintf(("%s: void "#cName"() leave\n", \
358 pszOdinDebugChannel)); \
359 } \
360 \
361 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5)
362
363
364/* ---------- 6 parameters ---------- */
365#define ODINFUNCTION6(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6) \
366 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6); \
367 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6) \
368 { \
369 FNINIT \
370 cRet rc; \
371 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
372 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh)", \
373 pszOdinDebugChannel, \
374 a1,a2,a3,a4,a5,a6)); \
375 FNPROLOGUE(#cName) \
376 rc = ODIN_##cName(a1,a2,a3,a4,a5,a6); \
377 FNEPILOGUE(#cName) \
378 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
379 pszOdinDebugChannel, \
380 rc)); \
381 return rc; \
382 } \
383 \
384 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6)
385
386#define ODINPROCEDURE6(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6) \
387 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6); \
388 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6) \
389 { \
390 FNINIT \
391 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
392 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh)", \
393 pszOdinDebugChannel, \
394 a1,a2,a3,a4,a5,a6)); \
395 FNPROLOGUE(#cName) \
396 ODIN_##cName(a1,a2,a3,a4,a5,a6); \
397 FNEPILOGUE(#cName) \
398 dprintf(("%s: void "#cName"() leave\n", \
399 pszOdinDebugChannel)); \
400 } \
401 \
402 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6)
403
404
405/* ---------- 7 parameters ---------- */
406#define ODINFUNCTION7(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7) \
407 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7); \
408 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7) \
409 { \
410 FNINIT \
411 cRet rc; \
412 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
413 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh)", \
414 pszOdinDebugChannel, \
415 a1,a2,a3,a4,a5,a6,a7)); \
416 FNPROLOGUE(#cName) \
417 rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7); \
418 FNEPILOGUE(#cName) \
419 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
420 pszOdinDebugChannel, \
421 rc)); \
422 return rc; \
423 } \
424 \
425 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7)
426
427#define ODINPROCEDURE7(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7) \
428 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7); \
429 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7) \
430 { \
431 FNINIT \
432 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
433 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh)", \
434 pszOdinDebugChannel, \
435 a1,a2,a3,a4,a5,a6,a7)); \
436 FNPROLOGUE(#cName) \
437 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7); \
438 FNEPILOGUE(#cName) \
439 dprintf(("%s: void "#cName"() leave\n", \
440 pszOdinDebugChannel)); \
441 } \
442 \
443 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7)
444
445
446/* ---------- 8 parameters ---------- */
447#define ODINFUNCTION8(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8) \
448 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8); \
449 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8) \
450 { \
451 FNINIT \
452 cRet rc; \
453 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
454 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
455 ", "#t8" "#a8"=%08xh)", \
456 pszOdinDebugChannel, \
457 a1,a2,a3,a4,a5,a6,a7,a8)); \
458 FNPROLOGUE(#cName) \
459 rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8); \
460 FNEPILOGUE(#cName) \
461 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
462 pszOdinDebugChannel, \
463 rc)); \
464 return rc; \
465 } \
466 \
467 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8)
468
469#define ODINPROCEDURE8(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8) \
470 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8); \
471 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8) \
472 { \
473 FNINIT \
474 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
475 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
476 ", "#t8" "#a8"=%08xh)", \
477 pszOdinDebugChannel, \
478 a1,a2,a3,a4,a5,a6,a7,a8)); \
479 FNPROLOGUE(#cName) \
480 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8); \
481 FNEPILOGUE(#cName) \
482 dprintf(("%s: void "#cName"() leave\n", \
483 pszOdinDebugChannel)); \
484 } \
485 \
486 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8)
487
488
489/* ---------- 9 parameters ---------- */
490#define ODINFUNCTION9(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9) \
491 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9); \
492 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9) \
493 { \
494 FNINIT \
495 cRet rc; \
496 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
497 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
498 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh)", \
499 pszOdinDebugChannel, \
500 a1,a2,a3,a4,a5,a6,a7,a8,a9)); \
501 FNPROLOGUE(#cName) \
502 rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9); \
503 FNEPILOGUE(#cName) \
504 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
505 pszOdinDebugChannel, \
506 rc)); \
507 return rc; \
508 } \
509 \
510 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9)
511
512#define ODINPROCEDURE9(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9) \
513 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9); \
514 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9) \
515 { \
516 FNINIT \
517 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
518 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
519 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh)", \
520 pszOdinDebugChannel, \
521 a1,a2,a3,a4,a5,a6,a7,a8,a9)); \
522 FNPROLOGUE(#cName) \
523 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9); \
524 FNEPILOGUE(#cName) \
525 dprintf(("%s: void "#cName"() leave\n", \
526 pszOdinDebugChannel)); \
527 } \
528 \
529 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9)
530
531
532/* ---------- 10 parameters ---------- */
533#define ODINFUNCTION10(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10) \
534 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10); \
535 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10) \
536 { \
537 FNINIT \
538 cRet rc; \
539 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
540 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
541 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh)", \
542 pszOdinDebugChannel, \
543 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10));\
544 FNPROLOGUE(#cName) \
545 rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10); \
546 FNEPILOGUE(#cName) \
547 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
548 pszOdinDebugChannel, \
549 rc)); \
550 return rc; \
551 } \
552 \
553 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10)
554
555#define ODINPROCEDURE10(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10) \
556 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10); \
557 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10) \
558 { \
559 FNINIT \
560 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
561 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
562 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh)", \
563 pszOdinDebugChannel, \
564 a1,a2,a3)); \
565 FNPROLOGUE(#cName) \
566 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10); \
567 FNEPILOGUE(#cName) \
568 dprintf(("%s: void "#cName"() leave\n", \
569 pszOdinDebugChannel)); \
570 } \
571 \
572 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10)
573
574
575/* ---------- 11 parameters ---------- */
576#define ODINFUNCTION11(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10,t11,a11) \
577 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11); \
578 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11) \
579 { \
580 FNINIT \
581 cRet rc; \
582 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
583 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
584 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh, "#t11" "#a11"=%08xh)", \
585 pszOdinDebugChannel, \
586 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)); \
587 FNPROLOGUE(#cName) \
588 rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11); \
589 FNEPILOGUE(#cName) \
590 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
591 pszOdinDebugChannel, \
592 rc)); \
593 return rc; \
594 } \
595 \
596 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11)
597
598#define ODINPROCEDURE11(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10,t11,a11) \
599 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11); \
600 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11) \
601 { \
602 FNINIT \
603 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
604 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
605 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh, "#t11" "#a11"=%08xh)", \
606 pszOdinDebugChannel, \
607 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)); \
608 FNPROLOGUE(#cName) \
609 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11); \
610 FNEPILOGUE(#cName) \
611 dprintf(("%s: void "#cName"() leave\n", \
612 pszOdinDebugChannel)); \
613 } \
614 \
615 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11)
616
617
618/* ---------- 12 parameters ---------- */
619#define ODINFUNCTION12(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10,t11,a11,t12,a12) \
620 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12); \
621 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12) \
622 { \
623 FNINIT \
624 cRet rc; \
625 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
626 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
627 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh, "#t11" "#a11"=%08xh" \
628 ", "#t12" "#a12"=%08xh)", \
629 pszOdinDebugChannel, \
630 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12)); \
631 FNPROLOGUE(#cName) \
632 rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12); \
633 FNEPILOGUE(#cName) \
634 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
635 pszOdinDebugChannel, \
636 rc)); \
637 return rc; \
638 } \
639 \
640 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12)
641
642#define ODINPROCEDURE12(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10,t11,a11,t12,a12) \
643 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12); \
644 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12) \
645 { \
646 FNINIT \
647 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
648 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
649 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh, "#t11" "#a11"=%08xh" \
650 ", "#t12" "#a12"=%08xh)", \
651 pszOdinDebugChannel, \
652 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12)); \
653 FNPROLOGUE(#cName) \
654 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12); \
655 FNEPILOGUE(#cName) \
656 dprintf(("%s: void "#cName"() leave\n", \
657 pszOdinDebugChannel)); \
658 } \
659 \
660 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12)
661
662
663/* ---------- 13 parameters ---------- */
664#define ODINFUNCTION13(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10,t11,a11,t12,a12,t13,a13) \
665 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12,t13 a13); \
666 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12,t13 a13) \
667 { \
668 FNINIT \
669 cRet rc; \
670 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
671 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
672 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh, "#t11" "#a11"=%08xh" \
673 ", "#t12" "#a12"=%08xh, "#t13" "#a13"=%08xh)", \
674 pszOdinDebugChannel, \
675 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13)); \
676 FNPROLOGUE(#cName) \
677 rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13); \
678 FNEPILOGUE(#cName) \
679 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
680 pszOdinDebugChannel, \
681 rc)); \
682 return rc; \
683 } \
684 \
685 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12,t13 a13)
686
687#define ODINPROCEDURE13(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10,t11,a11,t12,a12,t13,a13) \
688 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12,t13 a13); \
689 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12,t13 a13) \
690 { \
691 FNINIT \
692 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
693 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
694 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh, "#t11" "#a11"=%08xh" \
695 ", "#t12" "#a12"=%08xh, "#t13" "#a13"=%08xh, )", \
696 pszOdinDebugChannel, \
697 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13)); \
698 FNPROLOGUE(#cName) \
699 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13); \
700 FNEPILOGUE(#cName) \
701 dprintf(("%s: void "#cName"() leave\n", \
702 pszOdinDebugChannel)); \
703 } \
704 \
705 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12,t13 a13)
706
707
708/* ---------- 14 parameters ---------- */
709#define ODINFUNCTION14(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10,t11,a11,t12,a12,t13,a13,t14,a14) \
710 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12,t13 a13,t14 a14); \
711 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12,t13 a13,t14 a14) \
712 { \
713 FNINIT \
714 cRet rc; \
715 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
716 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
717 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh, "#t11" "#a11"=%08xh" \
718 ", "#t12" "#a12"=%08xh, "#t13" "#a13"=%08xh, "#t14" "#a14"=%08xh)", \
719 pszOdinDebugChannel, \
720 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14)); \
721 FNPROLOGUE(#cName) \
722 rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14); \
723 FNEPILOGUE(#cName) \
724 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
725 pszOdinDebugChannel, \
726 rc)); \
727 return rc; \
728 } \
729 \
730 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12,t13 a13,t14 a14)
731
732#define ODINPROCEDURE14(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10,t11,a11,t12,a12,t13,a13,t14,a14) \
733 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12,t13 a13,t14 a14); \
734 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12,t13 a13,t14 a14) \
735 { \
736 FNINIT \
737 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
738 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
739 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh, "#t11" "#a11"=%08xh" \
740 ", "#t12" "#a12"=%08xh, "#t13" "#a13"=%08xh, "#t14" "#a14"=%08xh)", \
741 pszOdinDebugChannel, \
742 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14)); \
743 FNPROLOGUE(#cName) \
744 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14); \
745 FNEPILOGUE(#cName) \
746 dprintf(("%s: void "#cName"() leave\n", \
747 pszOdinDebugChannel)); \
748 } \
749 \
750 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12,t13 a13,t14 a14)
751
752
753#else
754
755/****************************************************************************
756 * General Wrapper Macros *
757 ****************************************************************************/
758
759#define FNINIT \
760 unsigned short sel;
761
762#define FNPROLOGUE(a) \
763 sel = GetFS();
764
765#define FNEPILOGUE(a) \
766 SetFS(sel);
767
768#define ODINFUNCTION0 ODINFUNCTIONNODBG0
769#define ODINFUNCTION1 ODINFUNCTIONNODBG1
770#define ODINFUNCTION2 ODINFUNCTIONNODBG2
771#define ODINFUNCTION3 ODINFUNCTIONNODBG3
772#define ODINFUNCTION4 ODINFUNCTIONNODBG4
773#define ODINFUNCTION5 ODINFUNCTIONNODBG5
774#define ODINFUNCTION6 ODINFUNCTIONNODBG6
775#define ODINFUNCTION7 ODINFUNCTIONNODBG7
776#define ODINFUNCTION8 ODINFUNCTIONNODBG8
777#define ODINFUNCTION9 ODINFUNCTIONNODBG9
778#define ODINFUNCTION10 ODINFUNCTIONNODBG10
779#define ODINFUNCTION11 ODINFUNCTIONNODBG11
780#define ODINFUNCTION12 ODINFUNCTIONNODBG12
781#define ODINFUNCTION13 ODINFUNCTIONNODBG13
782#define ODINFUNCTION14 ODINFUNCTIONNODBG14
783
784#define ODINPROCEDURE0 ODINPROCEDURENODBG0
785#define ODINPROCEDURE1 ODINPROCEDURENODBG1
786#define ODINPROCEDURE2 ODINPROCEDURENODBG2
787#define ODINPROCEDURE3 ODINPROCEDURENODBG3
788#define ODINPROCEDURE4 ODINPROCEDURENODBG4
789#define ODINPROCEDURE5 ODINPROCEDURENODBG5
790#define ODINPROCEDURE6 ODINPROCEDURENODBG6
791#define ODINPROCEDURE7 ODINPROCEDURENODBG7
792#define ODINPROCEDURE8 ODINPROCEDURENODBG8
793#define ODINPROCEDURE9 ODINPROCEDURENODBG9
794#define ODINPROCEDURE10 ODINPROCEDURENODBG10
795#define ODINPROCEDURE11 ODINPROCEDURENODBG11
796#define ODINPROCEDURE12 ODINPROCEDURENODBG12
797#define ODINPROCEDURE13 ODINPROCEDURENODBG13
798#define ODINPROCEDURE14 ODINPROCEDURENODBG14
799
800#endif
801
802/****************************************************************************
803 * General Wrapper Macros *
804 ****************************************************************************/
805
806
807/* ---------- 0 parameters ---------- */
808#define ODINFUNCTIONNODBG0(cRet,cName) \
809 cRet ODIN_INTERNAL ODIN_##cName (void); \
810 cRet WINAPI cName(void) \
811 { \
812 FNINIT \
813 cRet rc; \
814 FNPROLOGUE(#cName) \
815 rc = ODIN_##cName(); \
816 FNEPILOGUE(#cName) \
817 return rc; \
818 } \
819 \
820 cRet ODIN_INTERNAL ODIN_##cName (void)
821
822
823#define ODINPROCEDURENODBG0(cName) \
824 void ODIN_INTERNAL ODIN_##cName (void); \
825 void WINAPI cName(void) \
826 { \
827 FNINIT \
828 FNPROLOGUE(#cName) \
829 ODIN_##cName(); \
830 FNEPILOGUE(#cName) \
831 } \
832 \
833 void ODIN_INTERNAL ODIN_##cName (void)
834
835
836/* ---------- 1 parameters ---------- */
837#define ODINFUNCTIONNODBG1(cRet,cName,t1,a1) \
838 cRet ODIN_INTERNAL ODIN_##cName (t1 a1); \
839 cRet WINAPI cName(t1 a1) \
840 { \
841 FNINIT \
842 cRet rc; \
843 FNPROLOGUE(#cName) \
844 rc = ODIN_##cName(a1); \
845 FNEPILOGUE(#cName) \
846 return rc; \
847 } \
848 \
849 cRet ODIN_INTERNAL ODIN_##cName (t1 a1)
850
851#define ODINPROCEDURENODBG1(cName,t1,a1) \
852 void ODIN_INTERNAL ODIN_##cName (t1 a1); \
853 void WINAPI cName(t1 a1) \
854 { \
855 FNINIT \
856 FNPROLOGUE(#cName) \
857 ODIN_##cName(a1); \
858 FNEPILOGUE(#cName) \
859 } \
860 \
861 void ODIN_INTERNAL ODIN_##cName (t1 a1)
862
863
864/* ---------- 2 parameters ---------- */
865#define ODINFUNCTIONNODBG2(cRet,cName,t1,a1,t2,a2) \
866 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2); \
867 cRet WINAPI cName(t1 a1,t2 a2) \
868 { \
869 FNINIT \
870 cRet rc; \
871 FNPROLOGUE(#cName) \
872 rc = ODIN_##cName(a1,a2); \
873 FNEPILOGUE(#cName) \
874 return rc; \
875 } \
876 \
877 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2)
878
879#define ODINPROCEDURENODBG2(cName,t1,a1,t2,a2) \
880 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2); \
881 void WINAPI cName(t1 a1,t2 a2) \
882 { \
883 FNINIT \
884 FNPROLOGUE(#cName) \
885 ODIN_##cName(a1,a2); \
886 FNEPILOGUE(#cName) \
887 } \
888 \
889 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2)
890
891
892/* ---------- 3 parameters ---------- */
893#define ODINFUNCTIONNODBG3(cRet,cName,t1,a1,t2,a2,t3,a3) \
894 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3); \
895 cRet WINAPI cName(t1 a1,t2 a2,t3 a3) \
896 { \
897 FNINIT \
898 cRet rc; \
899 FNPROLOGUE(#cName) \
900 rc = ODIN_##cName(a1,a2,a3); \
901 FNEPILOGUE(#cName) \
902 return rc; \
903 } \
904 \
905 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3)
906
907#define ODINPROCEDURENODBG3(cName,t1,a1,t2,a2,t3,a3) \
908 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3); \
909 void WINAPI cName(t1 a1,t2 a2,t3 a3) \
910 { \
911 FNINIT \
912 FNPROLOGUE(#cName) \
913 ODIN_##cName(a1,a2,a3); \
914 FNEPILOGUE(#cName) \
915 } \
916 \
917 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3)
918
919
920/* ---------- 4 parameters ---------- */
921#define ODINFUNCTIONNODBG4(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4) \
922 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4); \
923 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4) \
924 { \
925 FNINIT \
926 cRet rc; \
927 FNPROLOGUE(#cName) \
928 rc = ODIN_##cName(a1,a2,a3,a4); \
929 FNEPILOGUE(#cName) \
930 return rc; \
931 } \
932 \
933 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4)
934
935#define ODINPROCEDURENODBG4(cName,t1,a1,t2,a2,t3,a3,t4,a4) \
936 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4); \
937 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4) \
938 { \
939 FNINIT \
940 FNPROLOGUE(#cName) \
941 ODIN_##cName(a1,a2,a3,a4); \
942 FNEPILOGUE(#cName) \
943 } \
944 \
945 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4)
946
947
948/* ---------- 5 parameters ---------- */
949#define ODINFUNCTIONNODBG5(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5) \
950 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5); \
951 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5) \
952 { \
953 FNINIT \
954 cRet rc; \
955 FNPROLOGUE(#cName) \
956 rc = ODIN_##cName(a1,a2,a3,a4,a5); \
957 FNEPILOGUE(#cName) \
958 return rc; \
959 } \
960 \
961 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5)
962
963#define ODINPROCEDURENODBG5(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5) \
964 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5); \
965 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5) \
966 { \
967 FNINIT \
968 FNPROLOGUE(#cName) \
969 ODIN_##cName(a1,a2,a3,a4,a5); \
970 FNEPILOGUE(#cName) \
971 } \
972 \
973 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5)
974
975
976/* ---------- 6 parameters ---------- */
977#define ODINFUNCTIONNODBG6(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6) \
978 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6); \
979 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6) \
980 { \
981 FNINIT \
982 cRet rc; \
983 FNPROLOGUE(#cName) \
984 rc = ODIN_##cName(a1,a2,a3,a4,a5,a6); \
985 FNEPILOGUE(#cName) \
986 return rc; \
987 } \
988 \
989 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6)
990
991#define ODINPROCEDURENODBG6(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6) \
992 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6); \
993 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6) \
994 { \
995 FNINIT \
996 FNPROLOGUE(#cName) \
997 ODIN_##cName(a1,a2,a3,a4,a5,a6); \
998 FNEPILOGUE(#cName) \
999 } \
1000 \
1001 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6)
1002
1003
1004/* ---------- 7 parameters ---------- */
1005#define ODINFUNCTIONNODBG7(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7) \
1006 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7); \
1007 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7) \
1008 { \
1009 FNINIT \
1010 cRet rc; \
1011 FNPROLOGUE(#cName) \
1012 rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7); \
1013 FNEPILOGUE(#cName) \
1014 return rc; \
1015 } \
1016 \
1017 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7)
1018
1019#define ODINPROCEDURENODBG7(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7) \
1020 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7); \
1021 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7) \
1022 { \
1023 FNINIT \
1024 FNPROLOGUE(#cName) \
1025 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7); \
1026 FNEPILOGUE(#cName) \
1027 } \
1028 \
1029 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7)
1030
1031
1032/* ---------- 8 parameters ---------- */
1033#define ODINFUNCTIONNODBG8(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8) \
1034 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8); \
1035 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8) \
1036 { \
1037 FNINIT \
1038 cRet rc; \
1039 FNPROLOGUE(#cName) \
1040 rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8); \
1041 FNEPILOGUE(#cName) \
1042 return rc; \
1043 } \
1044 \
1045 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8)
1046
1047#define ODINPROCEDURENODBG8(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8) \
1048 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8); \
1049 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8) \
1050 { \
1051 FNINIT \
1052 FNPROLOGUE(#cName) \
1053 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8); \
1054 FNEPILOGUE(#cName) \
1055 } \
1056 \
1057 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8)
1058
1059
1060/* ---------- 9 parameters ---------- */
1061#define ODINFUNCTIONNODBG9(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9) \
1062 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9); \
1063 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9) \
1064 { \
1065 FNINIT \
1066 cRet rc; \
1067 FNPROLOGUE(#cName) \
1068 rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9); \
1069 FNEPILOGUE(#cName) \
1070 return rc; \
1071 } \
1072 \
1073 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9)
1074
1075#define ODINPROCEDURENODBG9(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9) \
1076 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9); \
1077 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9) \
1078 { \
1079 FNINIT \
1080 FNPROLOGUE(#cName) \
1081 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9); \
1082 FNEPILOGUE(#cName) \
1083 } \
1084 \
1085 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9)
1086
1087
1088/* ---------- 10 parameters ---------- */
1089#define ODINFUNCTIONNODBG10(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10) \
1090 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10); \
1091 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10) \
1092 { \
1093 FNINIT \
1094 cRet rc; \
1095 FNPROLOGUE(#cName) \
1096 rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10); \
1097 FNEPILOGUE(#cName) \
1098 return rc; \
1099 } \
1100 \
1101 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10)
1102
1103#define ODINPROCEDURENODBG10(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10) \
1104 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10); \
1105 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10) \
1106 { \
1107 FNINIT \
1108 FNPROLOGUE(#cName) \
1109 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10); \
1110 FNEPILOGUE(#cName) \
1111 } \
1112 \
1113 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10)
1114
1115
1116/* ---------- 11 parameters ---------- */
1117#define ODINFUNCTIONNODBG11(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10,t11,a11) \
1118 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11); \
1119 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11) \
1120 { \
1121 FNINIT \
1122 cRet rc; \
1123 FNPROLOGUE(#cName) \
1124 rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11); \
1125 FNEPILOGUE(#cName) \
1126 return rc; \
1127 } \
1128 \
1129 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11)
1130
1131#define ODINPROCEDURENODBG11(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10,t11,a11) \
1132 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11); \
1133 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11) \
1134 { \
1135 FNINIT \
1136 FNPROLOGUE(#cName) \
1137 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11); \
1138 FNEPILOGUE(#cName) \
1139 } \
1140 \
1141 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11)
1142
1143
1144/* ---------- 12 parameters ---------- */
1145#define ODINFUNCTIONNODBG12(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10,t11,a11,t12,a12) \
1146 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12); \
1147 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12) \
1148 { \
1149 FNINIT \
1150 cRet rc; \
1151 FNPROLOGUE(#cName) \
1152 rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12); \
1153 FNEPILOGUE(#cName) \
1154 return rc; \
1155 } \
1156 \
1157 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12)
1158
1159#define ODINPROCEDURENODBG12(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10,t11,a11,t12,a12) \
1160 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12); \
1161 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12) \
1162 { \
1163 FNINIT \
1164 FNPROLOGUE(#cName) \
1165 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12); \
1166 FNEPILOGUE(#cName) \
1167 } \
1168 \
1169 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12)
1170
1171
1172/* ---------- 13 parameters ---------- */
1173#define ODINFUNCTIONNODBG13(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10,t11,a11,t12,a12,t13,a13) \
1174 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12,t13 a13); \
1175 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12,t13 a13) \
1176 { \
1177 FNINIT \
1178 cRet rc; \
1179 FNPROLOGUE(#cName) \
1180 rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13); \
1181 FNEPILOGUE(#cName) \
1182 return rc; \
1183 } \
1184 \
1185 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12,t13 a13)
1186
1187#define ODINPROCEDURENODBG13(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10,t11,a11,t12,a12,t13,a13) \
1188 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12,t13 a13); \
1189 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12,t13 a13) \
1190 { \
1191 FNINIT \
1192 FNPROLOGUE(#cName) \
1193 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13); \
1194 FNEPILOGUE(#cName) \
1195 } \
1196 \
1197 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12,t13 a13)
1198
1199
1200/* ---------- 14 parameters ---------- */
1201#define ODINFUNCTIONNODBG14(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10,t11,a11,t12,a12,t13,a13,t14,a14) \
1202 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12,t13 a13,t14 a14); \
1203 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12,t13 a13,t14 a14) \
1204 { \
1205 FNINIT \
1206 cRet rc; \
1207 FNPROLOGUE(#cName) \
1208 rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14); \
1209 FNEPILOGUE(#cName) \
1210 return rc; \
1211 } \
1212 \
1213 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12,t13 a13,t14 a14)
1214
1215#define ODINPROCEDURENODBG14(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10,t11,a11,t12,a12,t13,a13,t14,a14) \
1216 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12,t13 a13,t14 a14); \
1217 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12,t13 a13,t14 a14) \
1218 { \
1219 FNINIT \
1220 FNPROLOGUE(#cName) \
1221 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14); \
1222 FNEPILOGUE(#cName) \
1223 } \
1224 \
1225 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12,t13 a13,t14 a14)
1226
1227#endif /* _ODINWRAP_H_ */
Note: See TracBrowser for help on using the repository browser.