source: trunk/include/odinwrap.h@ 22145

Last change on this file since 22145 was 21916, checked in by dmik, 14 years ago

Merge branch gcc-kmk to trunk.

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