source: trunk/include/odinwrap.h@ 5462

Last change on this file since 5462 was 5276, checked in by sandervl, 25 years ago

header updates

File size: 39.9 KB
RevLine 
[473]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_
[1545]12#define _ODINWRAP_H_
[473]13
[2341]14#include <os2sel.h>
[473]15
16/****************************************************************************
17 * Defines *
18 ****************************************************************************/
19
[3467]20// override debugging
21//#undef DEBUG
22//#define DEBUG
[537]23
[3467]24// override profiling
[4770]25//#undef PROFILE
26//#define PROFILE
[3467]27
28
29
[533]30#define ODIN_INTERNAL _Optlink
[473]31
32
[475]33#ifdef DEBUG
34# define ODINDEBUGCHANNEL(a) static char* pszOdinDebugChannel=#a;
[4124]35# define ODINDEBUGCHANNEL1(a) static char* pszOdinDebugChannel1=#a;
[475]36#else
37# define ODINDEBUGCHANNEL(a)
[4124]38# define ODINDEBUGCHANNEL1(a)
[475]39#endif
40
41
[1642]42//SvL: Define this to use the internal wrapper function of a specific api
[4387]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
[1642]50
[4377]51
[475]52#ifdef DEBUG
53
[1439]54//@@@PH 1999/10/25 IBM VAC++ debug memory support
55#include <malloc.h>
[4393]56#include <odin.h>
[1439]57
[4377]58// ---------------------------------------------------------------------------
[4393]59extern unsigned long int WIN32API GetCurrentThreadId(); //kernel32
[1669]60
[4377]61// ---------------------------------------------------------------------------
[1545]62//SvL: Only check the heap very frequently when there are problems
63//#define DEBUG_ODINHEAP
64#ifdef DEBUG_ODINHEAP
65#define ODIN_HEAPCHECK() _heap_check()
66#else
67#define ODIN_HEAPCHECK()
68#endif
69
[4377]70
71// ---------------------------------------------------------------------------
[3467]72// PH: this is for profiling cumulative method call times
[4770]73#ifdef PROFILE
[3467]74
75# define PROFILE_START(a) \
76 LARGE_INTEGER liStart; \
77 LARGE_INTEGER liEnd; \
78 unsigned long ulElapsed; \
79 QueryPerformanceCounter(&liStart);
80
81
82# define PROFILE_STOP(a) \
83 QueryPerformanceCounter(&liEnd);\
84 if (liStart.LowPart > liEnd.LowPart) \
85 ulElapsed = 0xFFFFFFFF - liStart.LowPart + liEnd.LowPart; \
86 else \
87 ulElapsed = liEnd.LowPart - liStart.LowPart; \
88 \
89 dprintf(("%s: %s %u ticks\n",\
90 pszOdinDebugChannel,\
91 a, \
92 ulElapsed));
93#else
94# define PROFILE_START(a)
95# define PROFILE_STOP(a)
96#endif
97
[4377]98
99#define FNPROLOGUE(a) \
[4381]100 USHORT sel = GetFS(); \
[4377]101 ODIN_HEAPCHECK(); \
102 PROFILE_START(a)
103
104#define FNEPILOGUE(a) \
105 PROFILE_STOP(a) \
106 ODIN_HEAPCHECK(); \
[5276]107 if (sel != GetFS()) { \
108 SetFS(sel); \
109 dprintf(("WARNING: FS: for thread %08xh corrupted by "a, GetCurrentThreadId())); \
110 }
[4377]111
112
[473]113/****************************************************************************
[475]114 * General Wrapper Macros (debug instrumented) *
115 ****************************************************************************/
116
117/* ---------- 0 parameters ---------- */
118#define ODINFUNCTION0(cRet,cName) \
[3467]119 cRet ODIN_INTERNAL ODIN_##cName (void); \
120 cRet WINAPI cName(void) \
[475]121 { \
[4393]122 dprintf(("%s: "#cRet" "#cName"()", \
[475]123 pszOdinDebugChannel)); \
[4377]124 FNPROLOGUE(#cName) \
[594]125 cRet rc = ODIN_##cName(); \
[4377]126 FNEPILOGUE(#cName) \
[4393]127 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
128 pszOdinDebugChannel, \
129 rc)); \
[475]130 return rc; \
131 } \
132 \
[484]133 cRet ODIN_INTERNAL ODIN_##cName (void)
[475]134
135
136#define ODINPROCEDURE0(cName) \
[3467]137 void ODIN_INTERNAL ODIN_##cName (void); \
138 void WINAPI cName(void) \
[475]139 { \
[4393]140 dprintf(("%s: void "#cName"()", \
[475]141 pszOdinDebugChannel)); \
[4377]142 FNPROLOGUE(#cName) \
[3467]143 ODIN_##cName(); \
144 dprintf(("%s: void "#cName"() leave\n", \
[475]145 pszOdinDebugChannel)); \
[4377]146 FNEPILOGUE(#cName) \
[475]147 } \
148 \
[484]149 void ODIN_INTERNAL ODIN_##cName (void)
[475]150
151
152/* ---------- 1 parameters ---------- */
153#define ODINFUNCTION1(cRet,cName,t1,a1) \
[3467]154 cRet ODIN_INTERNAL ODIN_##cName (t1 a1); \
155 cRet WINAPI cName(t1 a1) \
[475]156 { \
[4393]157 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh)", \
[475]158 pszOdinDebugChannel, \
159 a1)); \
[4377]160 FNPROLOGUE(#cName) \
[3467]161 cRet rc = ODIN_##cName(a1); \
[475]162 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
163 pszOdinDebugChannel, \
164 rc)); \
[4377]165 FNEPILOGUE(#cName) \
[475]166 return rc; \
167 } \
168 \
[484]169 cRet ODIN_INTERNAL ODIN_##cName (t1 a1)
[475]170
171#define ODINPROCEDURE1(cName,t1,a1) \
[3467]172 void ODIN_INTERNAL ODIN_##cName (t1 a1); \
173 void WINAPI cName(t1 a1) \
[475]174 { \
[4393]175 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh)", \
[475]176 pszOdinDebugChannel, \
177 a1)); \
[4377]178 FNPROLOGUE(#cName) \
[3467]179 ODIN_##cName(a1); \
180 dprintf(("%s: void "#cName"() leave\n", \
[475]181 pszOdinDebugChannel)); \
[4377]182 FNEPILOGUE(#cName) \
[475]183 } \
184 \
[484]185 void ODIN_INTERNAL ODIN_##cName (t1 a1)
[475]186
187
188/* ---------- 2 parameters ---------- */
189#define ODINFUNCTION2(cRet,cName,t1,a1,t2,a2) \
[3467]190 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2); \
191 cRet WINAPI cName(t1 a1,t2 a2) \
[475]192 { \
[4393]193 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh)", \
[3467]194 pszOdinDebugChannel, \
195 a1,a2)); \
[4377]196 FNPROLOGUE(#cName) \
[3467]197 cRet rc = ODIN_##cName(a1,a2); \
[475]198 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
[3467]199 pszOdinDebugChannel, \
200 rc)); \
[4377]201 FNEPILOGUE(#cName) \
[3467]202 return rc; \
203 } \
204 \
[484]205 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2)
[475]206
207#define ODINPROCEDURE2(cName,t1,a1,t2,a2) \
[484]208 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2); \
[3467]209 void WINAPI cName(t1 a1,t2 a2) \
[475]210 { \
[4393]211 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh)", \
[475]212 pszOdinDebugChannel, \
213 a1,a2)); \
[4377]214 FNPROLOGUE(#cName) \
[3467]215 ODIN_##cName(a1,a2); \
216 dprintf(("%s: void "#cName"() leave\n", \
[475]217 pszOdinDebugChannel)); \
[4377]218 FNEPILOGUE(#cName) \
[475]219 } \
220 \
[484]221 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2)
[475]222
223
224/* ---------- 3 parameters ---------- */
225#define ODINFUNCTION3(cRet,cName,t1,a1,t2,a2,t3,a3) \
[484]226 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3); \
227 cRet WINAPI cName(t1 a1,t2 a2,t3 a3) \
[3467]228 { \
[4393]229 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)", \
[475]230 pszOdinDebugChannel, \
231 a1,a2,a3)); \
[4377]232 FNPROLOGUE(#cName) \
[3467]233 cRet rc = ODIN_##cName(a1,a2,a3); \
[475]234 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
235 pszOdinDebugChannel, \
236 rc)); \
[4377]237 FNEPILOGUE(#cName) \
[475]238 return rc; \
239 } \
240 \
[484]241 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3)
[475]242
243#define ODINPROCEDURE3(cName,t1,a1,t2,a2,t3,a3) \
[484]244 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3); \
245 void WINAPI cName(t1 a1,t2 a2,t3 a3) \
[475]246 { \
[4393]247 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)", \
[475]248 pszOdinDebugChannel, \
249 a1,a2,a3)); \
[4377]250 FNPROLOGUE(#cName) \
[491]251 ODIN_##cName(a1,a2,a3); \
[475]252 pszOdinDebugChannel)); \
[4377]253 FNEPILOGUE(#cName) \
[475]254 } \
255 \
[484]256 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3)
[475]257
258
259/* ---------- 4 parameters ---------- */
260#define ODINFUNCTION4(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4) \
[484]261 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4); \
262 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4) \
[475]263 { \
[4393]264 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh, "#t4" "#a4"=%08xh)", \
[475]265 pszOdinDebugChannel, \
266 a1,a2,a3,a4)); \
[4377]267 FNPROLOGUE(#cName) \
[491]268 cRet rc = ODIN_##cName(a1,a2,a3,a4); \
[475]269 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
270 pszOdinDebugChannel, \
271 rc)); \
[4377]272 FNEPILOGUE(#cName) \
[475]273 return rc; \
274 } \
275 \
[484]276 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4)
[475]277
278#define ODINPROCEDURE4(cName,t1,a1,t2,a2,t3,a3,t4,a4) \
[484]279 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4); \
280 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4) \
[475]281 { \
[4393]282 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh, "#t4" "#a4"=%08xh)", \
[475]283 pszOdinDebugChannel, \
284 a1,a2,a3,a4)); \
[4377]285 FNPROLOGUE(#cName) \
[491]286 ODIN_##cName(a1,a2,a3,a4); \
[475]287 dprintf(("%s: void "#cName"() leave\n", \
288 pszOdinDebugChannel)); \
[4377]289 FNEPILOGUE \
[475]290 } \
291 \
[484]292 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4)
[475]293
294
295/* ---------- 5 parameters ---------- */
296#define ODINFUNCTION5(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5) \
[484]297 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5); \
298 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5) \
[475]299 { \
[4393]300 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh" \
[4377]301 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh)", \
[475]302 pszOdinDebugChannel, \
303 a1,a2,a3,a4,a5)); \
[4377]304 FNPROLOGUE(#cName) \
[491]305 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5); \
[475]306 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
307 pszOdinDebugChannel, \
308 rc)); \
[4377]309 FNEPILOGUE(#cName) \
[475]310 return rc; \
311 } \
312 \
[484]313 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5)
[475]314
315#define ODINPROCEDURE5(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5) \
[484]316 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5); \
317 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5) \
[475]318 { \
[4393]319 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[4377]320 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh)", \
[475]321 pszOdinDebugChannel, \
322 a1,a2,a3,a4,a5)); \
[4377]323 FNPROLOGUE(#cName) \
[491]324 ODIN_##cName(a1,a2,a3,a4,a5); \
[475]325 pszOdinDebugChannel)); \
[4377]326 FNEPILOGUE \
[475]327 } \
328 \
[484]329 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5)
[475]330
331
332/* ---------- 6 parameters ---------- */
333#define ODINFUNCTION6(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6) \
[484]334 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6); \
335 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6) \
[475]336 { \
[4393]337 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[4377]338 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh)", \
[475]339 pszOdinDebugChannel, \
[1437]340 a1,a2,a3,a4,a5,a6)); \
[4377]341 FNPROLOGUE(#cName) \
[491]342 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6); \
[475]343 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
344 pszOdinDebugChannel, \
345 rc)); \
[4377]346 FNEPILOGUE(#cName) \
[475]347 return rc; \
348 } \
349 \
[484]350 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6)
[475]351
352#define ODINPROCEDURE6(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6) \
[484]353 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6); \
354 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6) \
[475]355 { \
[4393]356 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[4377]357 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh)", \
[475]358 pszOdinDebugChannel, \
[1437]359 a1,a2,a3,a4,a5,a6)); \
[4377]360 FNPROLOGUE(#cName) \
[491]361 ODIN_##cName(a1,a2,a3,a4,a5,a6); \
[475]362 dprintf(("%s: void "#cName"() leave\n", \
363 pszOdinDebugChannel)); \
[4377]364 FNEPILOGUE \
[475]365 } \
366 \
[484]367 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6)
[475]368
369
370/* ---------- 7 parameters ---------- */
371#define ODINFUNCTION7(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7) \
[484]372 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7); \
373 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7) \
[475]374 { \
[4393]375 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[4377]376 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh)", \
[475]377 pszOdinDebugChannel, \
[1437]378 a1,a2,a3,a4,a5,a6,a7)); \
[4377]379 FNPROLOGUE(#cName) \
[491]380 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7); \
[475]381 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
382 pszOdinDebugChannel, \
383 rc)); \
[4377]384 FNEPILOGUE(#cName) \
[475]385 return rc; \
386 } \
387 \
[484]388 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7)
[475]389
390#define ODINPROCEDURE7(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7) \
[484]391 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7); \
392 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7) \
[475]393 { \
[4393]394 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[4377]395 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh)", \
[475]396 pszOdinDebugChannel, \
[1437]397 a1,a2,a3,a4,a5,a6,a7)); \
[4377]398 FNPROLOGUE(#cName) \
[491]399 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7); \
[475]400 dprintf(("%s: void "#cName"() leave\n", \
401 pszOdinDebugChannel)); \
[4377]402 FNEPILOGUE \
[475]403 } \
404 \
[484]405 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7)
[475]406
407
408/* ---------- 8 parameters ---------- */
409#define ODINFUNCTION8(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8) \
[484]410 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8); \
411 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8) \
[475]412 { \
[4393]413 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[476]414 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
[4377]415 ", "#t8" "#a8"=%08xh)", \
[475]416 pszOdinDebugChannel, \
[1437]417 a1,a2,a3,a4,a5,a6,a7,a8)); \
[4377]418 FNPROLOGUE(#cName) \
[491]419 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8); \
[475]420 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
421 pszOdinDebugChannel, \
422 rc)); \
[4377]423 FNEPILOGUE(#cName) \
[475]424 return rc; \
425 } \
426 \
[484]427 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8)
[475]428
429#define ODINPROCEDURE8(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8) \
[484]430 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8); \
431 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8) \
[475]432 { \
[4393]433 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[476]434 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
[4377]435 ", "#t8" "#a8"=%08xh)", \
[475]436 pszOdinDebugChannel, \
[1437]437 a1,a2,a3,a4,a5,a6,a7,a8)); \
[4377]438 FNPROLOGUE(#cName) \
[491]439 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8); \
[475]440 dprintf(("%s: void "#cName"() leave\n", \
441 pszOdinDebugChannel)); \
[4377]442 FNEPILOGUE \
[475]443 } \
444 \
[484]445 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8)
[475]446
447
448/* ---------- 9 parameters ---------- */
449#define ODINFUNCTION9(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9) \
[484]450 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9); \
451 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9) \
[475]452 { \
[4393]453 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[476]454 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
[4377]455 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh)", \
[475]456 pszOdinDebugChannel, \
[1437]457 a1,a2,a3,a4,a5,a6,a7,a8,a9)); \
[4377]458 FNPROLOGUE(#cName) \
[491]459 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9); \
[475]460 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
461 pszOdinDebugChannel, \
462 rc)); \
[4377]463 FNEPILOGUE(#cName) \
[475]464 return rc; \
465 } \
466 \
[484]467 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9)
[475]468
469#define ODINPROCEDURE9(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9) \
[484]470 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9); \
471 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9) \
[475]472 { \
[4393]473 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[476]474 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
[4377]475 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh)", \
[475]476 pszOdinDebugChannel, \
[1437]477 a1,a2,a3,a4,a5,a6,a7,a8,a9)); \
[4377]478 FNPROLOGUE(#cName) \
[491]479 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9); \
[475]480 dprintf(("%s: void "#cName"() leave\n", \
481 pszOdinDebugChannel)); \
[4377]482 FNEPILOGUE \
[475]483 } \
484 \
[484]485 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9)
[475]486
487
488/* ---------- 10 parameters ---------- */
489#define ODINFUNCTION10(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10) \
[484]490 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); \
491 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10) \
[475]492 { \
[4393]493 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[476]494 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
[4377]495 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh)", \
[475]496 pszOdinDebugChannel, \
[1437]497 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10));\
[4377]498 FNPROLOGUE(#cName) \
[491]499 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10); \
[475]500 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
501 pszOdinDebugChannel, \
502 rc)); \
[4377]503 FNEPILOGUE(#cName) \
[475]504 return rc; \
505 } \
506 \
[484]507 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)
[475]508
509#define ODINPROCEDURE10(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10) \
[484]510 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); \
511 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10) \
[475]512 { \
[4393]513 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[476]514 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
[4377]515 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh)", \
[475]516 pszOdinDebugChannel, \
517 a1,a2,a3)); \
[4377]518 FNPROLOGUE(#cName) \
[491]519 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10); \
[475]520 dprintf(("%s: void "#cName"() leave\n", \
521 pszOdinDebugChannel)); \
[4377]522 FNEPILOGUE \
[475]523 } \
524 \
[484]525 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)
[475]526
527
528/* ---------- 11 parameters ---------- */
529#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) \
[484]530 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); \
531 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) \
[475]532 { \
[4393]533 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[476]534 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
[4377]535 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh, "#t11" "#a11"=%08xh)", \
[475]536 pszOdinDebugChannel, \
[1437]537 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)); \
[4377]538 FNPROLOGUE(#cName) \
[491]539 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11); \
[475]540 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
541 pszOdinDebugChannel, \
542 rc)); \
[4377]543 FNEPILOGUE(#cName) \
[475]544 return rc; \
545 } \
546 \
[484]547 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)
[475]548
549#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) \
[484]550 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); \
551 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) \
[475]552 { \
[4393]553 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[476]554 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
[4377]555 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh, "#t11" "#a11"=%08xh)", \
[475]556 pszOdinDebugChannel, \
[1437]557 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)); \
[4377]558 FNPROLOGUE(#cName) \
[491]559 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11); \
[475]560 dprintf(("%s: void "#cName"() leave\n", \
561 pszOdinDebugChannel)); \
[4377]562 FNEPILOGUE \
[475]563 } \
564 \
[484]565 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)
[475]566
567
568/* ---------- 12 parameters ---------- */
569#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) \
[484]570 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); \
571 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) \
[475]572 { \
[4393]573 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[476]574 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
575 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh, "#t11" "#a11"=%08xh" \
[4377]576 ", "#t12" "#a12"=%08xh)", \
[475]577 pszOdinDebugChannel, \
[1437]578 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12)); \
[4377]579 FNPROLOGUE(#cName) \
[491]580 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12); \
[475]581 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
582 pszOdinDebugChannel, \
583 rc)); \
[4377]584 FNEPILOGUE(#cName) \
[475]585 return rc; \
586 } \
587 \
[484]588 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)
[475]589
590#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) \
[484]591 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); \
592 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) \
[475]593 { \
[4393]594 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[476]595 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
596 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh, "#t11" "#a11"=%08xh" \
[4377]597 ", "#t12" "#a12"=%08xh)", \
[475]598 pszOdinDebugChannel, \
[1696]599 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12)); \
[4377]600 FNPROLOGUE(#cName) \
[491]601 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12); \
[475]602 dprintf(("%s: void "#cName"() leave\n", \
603 pszOdinDebugChannel)); \
[4377]604 FNEPILOGUE \
[475]605 } \
606 \
[484]607 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)
[475]608
609
[1696]610/* ---------- 13 parameters ---------- */
611#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) \
612 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); \
613 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) \
614 { \
[4393]615 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[1696]616 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
617 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh, "#t11" "#a11"=%08xh" \
[4377]618 ", "#t12" "#a12"=%08xh, "#t13" "#a13"=%08xh)", \
[1696]619 pszOdinDebugChannel, \
620 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13)); \
[4377]621 FNPROLOGUE(#cName) \
[1696]622 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13); \
623 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
624 pszOdinDebugChannel, \
625 rc)); \
[4377]626 FNEPILOGUE(#cName) \
[1696]627 return rc; \
628 } \
629 \
630 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)
631
632#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) \
633 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); \
634 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) \
635 { \
[4393]636 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[1696]637 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
638 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh, "#t11" "#a11"=%08xh" \
[4377]639 ", "#t12" "#a12"=%08xh, "#t13" "#a13"=%08xh, )", \
[1696]640 pszOdinDebugChannel, \
641 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13)); \
[4377]642 FNPROLOGUE(#cName) \
[1696]643 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13); \
644 dprintf(("%s: void "#cName"() leave\n", \
645 pszOdinDebugChannel)); \
[4377]646 FNEPILOGUE \
[1696]647 } \
648 \
649 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)
650
651
652/* ---------- 14 parameters ---------- */
653#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) \
654 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); \
655 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) \
656 { \
[4393]657 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[1696]658 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
659 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh, "#t11" "#a11"=%08xh" \
[4377]660 ", "#t12" "#a12"=%08xh, "#t13" "#a13"=%08xh, "#t14" "#a14"=%08xh)", \
[1696]661 pszOdinDebugChannel, \
662 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14)); \
[4377]663 FNPROLOGUE(#cName) \
[1696]664 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14); \
665 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
666 pszOdinDebugChannel, \
667 rc)); \
[4377]668 FNEPILOGUE(#cName) \
[1696]669 return rc; \
670 } \
671 \
672 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)
673
674#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) \
[1953]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,t12 a12,t13 a13,t14 a14); \
[1696]676 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) \
677 { \
[4393]678 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[1696]679 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
680 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh, "#t11" "#a11"=%08xh" \
[4377]681 ", "#t12" "#a12"=%08xh, "#t13" "#a13"=%08xh, "#t14" "#a14"=%08xh)", \
[1696]682 pszOdinDebugChannel, \
683 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14)); \
[4377]684 FNPROLOGUE(#cName) \
[1696]685 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14); \
686 dprintf(("%s: void "#cName"() leave\n", \
687 pszOdinDebugChannel)); \
[4377]688 FNEPILOGUE \
[1696]689 } \
690 \
691 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)
692
693
[475]694#else
695
696/****************************************************************************
[473]697 * General Wrapper Macros *
698 ****************************************************************************/
699
[4377]700#define ODINFUNCTION0 ODINFUNCTIONNODBG0
[4386]701#define ODINFUNCTION1 ODINFUNCTIONNODBG1
702#define ODINFUNCTION2 ODINFUNCTIONNODBG2
703#define ODINFUNCTION3 ODINFUNCTIONNODBG3
704#define ODINFUNCTION4 ODINFUNCTIONNODBG4
705#define ODINFUNCTION5 ODINFUNCTIONNODBG5
706#define ODINFUNCTION6 ODINFUNCTIONNODBG6
707#define ODINFUNCTION7 ODINFUNCTIONNODBG7
708#define ODINFUNCTION8 ODINFUNCTIONNODBG8
709#define ODINFUNCTION9 ODINFUNCTIONNODBG9
[4377]710#define ODINFUNCTION10 ODINFUNCTIONNODBG10
711#define ODINFUNCTION11 ODINFUNCTIONNODBG11
712#define ODINFUNCTION12 ODINFUNCTIONNODBG12
713#define ODINFUNCTION13 ODINFUNCTIONNODBG13
714#define ODINFUNCTION14 ODINFUNCTIONNODBG14
[473]715
[4377]716#define ODINPROCEDURE0 ODINPROCEDURENODBG0
[4386]717#define ODINPROCEDURE1 ODINPROCEDURENODBG1
718#define ODINPROCEDURE2 ODINPROCEDURENODBG2
719#define ODINPROCEDURE3 ODINPROCEDURENODBG3
720#define ODINPROCEDURE4 ODINPROCEDURENODBG4
721#define ODINPROCEDURE5 ODINPROCEDURENODBG5
722#define ODINPROCEDURE6 ODINPROCEDURENODBG6
723#define ODINPROCEDURE7 ODINPROCEDURENODBG7
724#define ODINPROCEDURE8 ODINPROCEDURENODBG8
725#define ODINPROCEDURE9 ODINPROCEDURENODBG9
[4377]726#define ODINPROCEDURE10 ODINPROCEDURENODBG10
727#define ODINPROCEDURE11 ODINPROCEDURENODBG11
728#define ODINPROCEDURE12 ODINPROCEDURENODBG12
729#define ODINPROCEDURE13 ODINPROCEDURENODBG13
730#define ODINPROCEDURE14 ODINPROCEDURENODBG14
[473]731
[475]732#endif
733
[1669]734/****************************************************************************
735 * General Wrapper Macros *
736 ****************************************************************************/
737
738/* ---------- 0 parameters ---------- */
[4377]739#define ODINFUNCTIONNODBG0(cRet,cName) cRet WINAPI cName(void)
740#define ODINPROCEDURENODBG0(cName) void WINAPI cName(void)
[1669]741
742/* ---------- 1 parameters ---------- */
[4377]743#define ODINFUNCTIONNODBG1(cRet,cName,t1,a1) cRet WINAPI cName(t1 a1)
744#define ODINPROCEDURENODBG1(cName,t1,a1) void WINAPI cName(t1 a1)
[1669]745
746/* ---------- 2 parameters ---------- */
[4377]747#define ODINFUNCTIONNODBG2(cRet,cName,t1,a1,t2,a2) cRet WINAPI cName(t1 a1,t2 a2)
748#define ODINPROCEDURENODBG2(cName,t1,a1,t2,a2) void WINAPI cName(t1 a1,t2 a2)
[1669]749
750/* ---------- 3 parameters ---------- */
[4377]751#define ODINFUNCTIONNODBG3(cRet,cName,t1,a1,t2,a2,t3,a3) cRet WINAPI cName(t1 a1,t2 a2,t3 a3)
752#define ODINPROCEDURENODBG3(cName,t1,a1,t2,a2,t3,a3) void WINAPI cName(t1 a1,t2 a2,t3 a3)
[1669]753
754/* ---------- 4 parameters ---------- */
[4377]755#define ODINFUNCTIONNODBG4(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4) cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4)
756#define ODINPROCEDURENODBG4(cName,t1,a1,t2,a2,t3,a3,t4,a4) void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4)
[1669]757
758/* ---------- 5 parameters ---------- */
[4377]759#define ODINFUNCTIONNODBG5(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5) cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5)
760#define ODINPROCEDURENODBG5(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5) void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5)
[1669]761
762/* ---------- 6 parameters ---------- */
[4377]763#define ODINFUNCTIONNODBG6(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6) cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6)
764#define ODINPROCEDURENODBG6(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6) void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6)
[1669]765
766/* ---------- 7 parameters ---------- */
[4377]767#define ODINFUNCTIONNODBG7(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7) cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7)
768#define ODINPROCEDURENODBG7(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7) void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7)
[1669]769
770/* ---------- 8 parameters ---------- */
[4377]771#define ODINFUNCTIONNODBG8(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8) cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8)
772#define ODINPROCEDURENODBG8(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8) void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8)
[1669]773
774/* ---------- 9 parameters ---------- */
[4377]775#define ODINFUNCTIONNODBG9(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9) cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9)
776#define ODINPROCEDURENODBG9(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9) void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9)
[1669]777
778/* ---------- 10 parameters ---------- */
[4377]779#define ODINFUNCTIONNODBG10(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10) cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10)
780#define ODINPROCEDURENODBG10(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10) void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10)
[1669]781
782/* ---------- 11 parameters ---------- */
[4377]783#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) 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)
784#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) 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)
[1669]785
786/* ---------- 12 parameters ---------- */
[4377]787#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) 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)
788#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) 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)
[1669]789
[1696]790/* ---------- 13 parameters ---------- */
791#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) \
[4377]792 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)
[1669]793
[1696]794#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) \
[4377]795 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)
[1669]796
[1696]797/* ---------- 14 parameters ---------- */
798#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) \
[4377]799 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)
[1696]800
801#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) \
[4377]802 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)
[1696]803
804
[473]805#endif /* _ODINWRAP_H_ */
Note: See TracBrowser for help on using the repository browser.