source: trunk/include/odinwrap.h@ 6552

Last change on this file since 6552 was 5759, checked in by sandervl, 24 years ago

odin wrapper fixes (fs corruption in release mode)

File size: 53.2 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); \
[5759]252 dprintf(("%s: void "#cName"() leave\n", \
[475]253 pszOdinDebugChannel)); \
[4377]254 FNEPILOGUE(#cName) \
[475]255 } \
256 \
[484]257 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3)
[475]258
259
260/* ---------- 4 parameters ---------- */
261#define ODINFUNCTION4(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4) \
[484]262 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4); \
263 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4) \
[475]264 { \
[4393]265 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh, "#t4" "#a4"=%08xh)", \
[475]266 pszOdinDebugChannel, \
267 a1,a2,a3,a4)); \
[4377]268 FNPROLOGUE(#cName) \
[491]269 cRet rc = ODIN_##cName(a1,a2,a3,a4); \
[475]270 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
271 pszOdinDebugChannel, \
272 rc)); \
[4377]273 FNEPILOGUE(#cName) \
[475]274 return rc; \
275 } \
276 \
[484]277 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4)
[475]278
279#define ODINPROCEDURE4(cName,t1,a1,t2,a2,t3,a3,t4,a4) \
[484]280 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4); \
281 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4) \
[475]282 { \
[4393]283 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh, "#t4" "#a4"=%08xh)", \
[475]284 pszOdinDebugChannel, \
285 a1,a2,a3,a4)); \
[4377]286 FNPROLOGUE(#cName) \
[491]287 ODIN_##cName(a1,a2,a3,a4); \
[5759]288 dprintf(("%s: void "#cName"() leave\n", \
[475]289 pszOdinDebugChannel)); \
[4377]290 FNEPILOGUE \
[475]291 } \
292 \
[484]293 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4)
[475]294
295
296/* ---------- 5 parameters ---------- */
297#define ODINFUNCTION5(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5) \
[484]298 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5); \
299 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5) \
[475]300 { \
[4393]301 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh" \
[4377]302 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh)", \
[475]303 pszOdinDebugChannel, \
304 a1,a2,a3,a4,a5)); \
[4377]305 FNPROLOGUE(#cName) \
[491]306 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5); \
[475]307 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
308 pszOdinDebugChannel, \
309 rc)); \
[4377]310 FNEPILOGUE(#cName) \
[475]311 return rc; \
312 } \
313 \
[484]314 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5)
[475]315
316#define ODINPROCEDURE5(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5) \
[484]317 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5); \
318 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5) \
[475]319 { \
[4393]320 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[4377]321 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh)", \
[475]322 pszOdinDebugChannel, \
323 a1,a2,a3,a4,a5)); \
[4377]324 FNPROLOGUE(#cName) \
[491]325 ODIN_##cName(a1,a2,a3,a4,a5); \
[5759]326 dprintf(("%s: void "#cName"() leave\n", \
[475]327 pszOdinDebugChannel)); \
[4377]328 FNEPILOGUE \
[475]329 } \
330 \
[484]331 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5)
[475]332
333
334/* ---------- 6 parameters ---------- */
335#define ODINFUNCTION6(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6) \
[484]336 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6); \
337 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6) \
[475]338 { \
[4393]339 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[4377]340 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh)", \
[475]341 pszOdinDebugChannel, \
[1437]342 a1,a2,a3,a4,a5,a6)); \
[4377]343 FNPROLOGUE(#cName) \
[491]344 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6); \
[475]345 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
346 pszOdinDebugChannel, \
347 rc)); \
[4377]348 FNEPILOGUE(#cName) \
[475]349 return rc; \
350 } \
351 \
[484]352 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6)
[475]353
354#define ODINPROCEDURE6(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6) \
[484]355 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6); \
356 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6) \
[475]357 { \
[4393]358 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[4377]359 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh)", \
[475]360 pszOdinDebugChannel, \
[1437]361 a1,a2,a3,a4,a5,a6)); \
[4377]362 FNPROLOGUE(#cName) \
[491]363 ODIN_##cName(a1,a2,a3,a4,a5,a6); \
[475]364 dprintf(("%s: void "#cName"() leave\n", \
365 pszOdinDebugChannel)); \
[4377]366 FNEPILOGUE \
[475]367 } \
368 \
[484]369 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6)
[475]370
371
372/* ---------- 7 parameters ---------- */
373#define ODINFUNCTION7(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7) \
[484]374 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7); \
375 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7) \
[475]376 { \
[4393]377 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[4377]378 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh)", \
[475]379 pszOdinDebugChannel, \
[1437]380 a1,a2,a3,a4,a5,a6,a7)); \
[4377]381 FNPROLOGUE(#cName) \
[491]382 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7); \
[475]383 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
384 pszOdinDebugChannel, \
385 rc)); \
[4377]386 FNEPILOGUE(#cName) \
[475]387 return rc; \
388 } \
389 \
[484]390 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7)
[475]391
392#define ODINPROCEDURE7(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7) \
[484]393 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7); \
394 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7) \
[475]395 { \
[4393]396 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[4377]397 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh)", \
[475]398 pszOdinDebugChannel, \
[1437]399 a1,a2,a3,a4,a5,a6,a7)); \
[4377]400 FNPROLOGUE(#cName) \
[491]401 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7); \
[475]402 dprintf(("%s: void "#cName"() leave\n", \
403 pszOdinDebugChannel)); \
[4377]404 FNEPILOGUE \
[475]405 } \
406 \
[484]407 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7)
[475]408
409
410/* ---------- 8 parameters ---------- */
411#define ODINFUNCTION8(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8) \
[484]412 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8); \
413 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8) \
[475]414 { \
[4393]415 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[476]416 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
[4377]417 ", "#t8" "#a8"=%08xh)", \
[475]418 pszOdinDebugChannel, \
[1437]419 a1,a2,a3,a4,a5,a6,a7,a8)); \
[4377]420 FNPROLOGUE(#cName) \
[491]421 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8); \
[475]422 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
423 pszOdinDebugChannel, \
424 rc)); \
[4377]425 FNEPILOGUE(#cName) \
[475]426 return rc; \
427 } \
428 \
[484]429 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8)
[475]430
431#define ODINPROCEDURE8(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8) \
[484]432 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8); \
433 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8) \
[475]434 { \
[4393]435 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[476]436 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
[4377]437 ", "#t8" "#a8"=%08xh)", \
[475]438 pszOdinDebugChannel, \
[1437]439 a1,a2,a3,a4,a5,a6,a7,a8)); \
[4377]440 FNPROLOGUE(#cName) \
[491]441 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8); \
[475]442 dprintf(("%s: void "#cName"() leave\n", \
443 pszOdinDebugChannel)); \
[4377]444 FNEPILOGUE \
[475]445 } \
446 \
[484]447 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8)
[475]448
449
450/* ---------- 9 parameters ---------- */
451#define ODINFUNCTION9(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9) \
[484]452 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9); \
453 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9) \
[475]454 { \
[4393]455 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[476]456 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
[4377]457 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh)", \
[475]458 pszOdinDebugChannel, \
[1437]459 a1,a2,a3,a4,a5,a6,a7,a8,a9)); \
[4377]460 FNPROLOGUE(#cName) \
[491]461 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9); \
[475]462 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
463 pszOdinDebugChannel, \
464 rc)); \
[4377]465 FNEPILOGUE(#cName) \
[475]466 return rc; \
467 } \
468 \
[484]469 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9)
[475]470
471#define ODINPROCEDURE9(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9) \
[484]472 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9); \
473 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9) \
[475]474 { \
[4393]475 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[476]476 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
[4377]477 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh)", \
[475]478 pszOdinDebugChannel, \
[1437]479 a1,a2,a3,a4,a5,a6,a7,a8,a9)); \
[4377]480 FNPROLOGUE(#cName) \
[491]481 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9); \
[475]482 dprintf(("%s: void "#cName"() leave\n", \
483 pszOdinDebugChannel)); \
[4377]484 FNEPILOGUE \
[475]485 } \
486 \
[484]487 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9)
[475]488
489
490/* ---------- 10 parameters ---------- */
491#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]492 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); \
493 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10) \
[475]494 { \
[4393]495 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[476]496 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
[4377]497 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh)", \
[475]498 pszOdinDebugChannel, \
[1437]499 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10));\
[4377]500 FNPROLOGUE(#cName) \
[491]501 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10); \
[475]502 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
503 pszOdinDebugChannel, \
504 rc)); \
[4377]505 FNEPILOGUE(#cName) \
[475]506 return rc; \
507 } \
508 \
[484]509 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]510
511#define ODINPROCEDURE10(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10) \
[484]512 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); \
513 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10) \
[475]514 { \
[4393]515 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[476]516 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
[4377]517 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh)", \
[475]518 pszOdinDebugChannel, \
519 a1,a2,a3)); \
[4377]520 FNPROLOGUE(#cName) \
[491]521 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10); \
[475]522 dprintf(("%s: void "#cName"() leave\n", \
523 pszOdinDebugChannel)); \
[4377]524 FNEPILOGUE \
[475]525 } \
526 \
[484]527 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]528
529
530/* ---------- 11 parameters ---------- */
531#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]532 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); \
533 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]534 { \
[4393]535 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[476]536 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
[4377]537 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh, "#t11" "#a11"=%08xh)", \
[475]538 pszOdinDebugChannel, \
[1437]539 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)); \
[4377]540 FNPROLOGUE(#cName) \
[491]541 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11); \
[475]542 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
543 pszOdinDebugChannel, \
544 rc)); \
[4377]545 FNEPILOGUE(#cName) \
[475]546 return rc; \
547 } \
548 \
[484]549 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]550
551#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]552 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); \
553 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]554 { \
[4393]555 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[476]556 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
[4377]557 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh, "#t11" "#a11"=%08xh)", \
[475]558 pszOdinDebugChannel, \
[1437]559 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)); \
[4377]560 FNPROLOGUE(#cName) \
[491]561 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11); \
[475]562 dprintf(("%s: void "#cName"() leave\n", \
563 pszOdinDebugChannel)); \
[4377]564 FNEPILOGUE \
[475]565 } \
566 \
[484]567 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]568
569
570/* ---------- 12 parameters ---------- */
571#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]572 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); \
573 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]574 { \
[4393]575 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[476]576 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
577 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh, "#t11" "#a11"=%08xh" \
[4377]578 ", "#t12" "#a12"=%08xh)", \
[475]579 pszOdinDebugChannel, \
[1437]580 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12)); \
[4377]581 FNPROLOGUE(#cName) \
[491]582 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12); \
[475]583 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
584 pszOdinDebugChannel, \
585 rc)); \
[4377]586 FNEPILOGUE(#cName) \
[475]587 return rc; \
588 } \
589 \
[484]590 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]591
592#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]593 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); \
594 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]595 { \
[4393]596 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[476]597 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
598 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh, "#t11" "#a11"=%08xh" \
[4377]599 ", "#t12" "#a12"=%08xh)", \
[475]600 pszOdinDebugChannel, \
[1696]601 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12)); \
[4377]602 FNPROLOGUE(#cName) \
[491]603 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12); \
[475]604 dprintf(("%s: void "#cName"() leave\n", \
605 pszOdinDebugChannel)); \
[4377]606 FNEPILOGUE \
[475]607 } \
608 \
[484]609 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]610
611
[1696]612/* ---------- 13 parameters ---------- */
613#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) \
614 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); \
615 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) \
616 { \
[4393]617 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[1696]618 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
619 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh, "#t11" "#a11"=%08xh" \
[4377]620 ", "#t12" "#a12"=%08xh, "#t13" "#a13"=%08xh)", \
[1696]621 pszOdinDebugChannel, \
622 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13)); \
[4377]623 FNPROLOGUE(#cName) \
[1696]624 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13); \
625 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
626 pszOdinDebugChannel, \
627 rc)); \
[4377]628 FNEPILOGUE(#cName) \
[1696]629 return rc; \
630 } \
631 \
632 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)
633
634#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) \
635 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); \
636 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) \
637 { \
[4393]638 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[1696]639 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
640 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh, "#t11" "#a11"=%08xh" \
[4377]641 ", "#t12" "#a12"=%08xh, "#t13" "#a13"=%08xh, )", \
[1696]642 pszOdinDebugChannel, \
643 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13)); \
[4377]644 FNPROLOGUE(#cName) \
[1696]645 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13); \
646 dprintf(("%s: void "#cName"() leave\n", \
647 pszOdinDebugChannel)); \
[4377]648 FNEPILOGUE \
[1696]649 } \
650 \
651 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)
652
653
654/* ---------- 14 parameters ---------- */
655#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) \
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,t12 a12,t13 a13,t14 a14); \
657 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) \
658 { \
[4393]659 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[1696]660 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
661 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh, "#t11" "#a11"=%08xh" \
[4377]662 ", "#t12" "#a12"=%08xh, "#t13" "#a13"=%08xh, "#t14" "#a14"=%08xh)", \
[1696]663 pszOdinDebugChannel, \
664 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14)); \
[4377]665 FNPROLOGUE(#cName) \
[1696]666 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14); \
667 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
668 pszOdinDebugChannel, \
669 rc)); \
[4377]670 FNEPILOGUE(#cName) \
[1696]671 return rc; \
672 } \
673 \
674 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)
675
676#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]677 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]678 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) \
679 { \
[4393]680 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[1696]681 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
682 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh, "#t11" "#a11"=%08xh" \
[4377]683 ", "#t12" "#a12"=%08xh, "#t13" "#a13"=%08xh, "#t14" "#a14"=%08xh)", \
[1696]684 pszOdinDebugChannel, \
685 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14)); \
[4377]686 FNPROLOGUE(#cName) \
[1696]687 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14); \
688 dprintf(("%s: void "#cName"() leave\n", \
689 pszOdinDebugChannel)); \
[4377]690 FNEPILOGUE \
[1696]691 } \
692 \
693 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)
694
695
[475]696#else
697
698/****************************************************************************
[473]699 * General Wrapper Macros *
700 ****************************************************************************/
701
[5759]702#define FNPROLOGUE(a) \
703 USHORT sel = GetFS();
704
705#define FNEPILOGUE(a) \
706 SetFS(sel);
707
[4377]708#define ODINFUNCTION0 ODINFUNCTIONNODBG0
[4386]709#define ODINFUNCTION1 ODINFUNCTIONNODBG1
710#define ODINFUNCTION2 ODINFUNCTIONNODBG2
711#define ODINFUNCTION3 ODINFUNCTIONNODBG3
712#define ODINFUNCTION4 ODINFUNCTIONNODBG4
713#define ODINFUNCTION5 ODINFUNCTIONNODBG5
714#define ODINFUNCTION6 ODINFUNCTIONNODBG6
715#define ODINFUNCTION7 ODINFUNCTIONNODBG7
716#define ODINFUNCTION8 ODINFUNCTIONNODBG8
717#define ODINFUNCTION9 ODINFUNCTIONNODBG9
[4377]718#define ODINFUNCTION10 ODINFUNCTIONNODBG10
719#define ODINFUNCTION11 ODINFUNCTIONNODBG11
720#define ODINFUNCTION12 ODINFUNCTIONNODBG12
721#define ODINFUNCTION13 ODINFUNCTIONNODBG13
722#define ODINFUNCTION14 ODINFUNCTIONNODBG14
[473]723
[4377]724#define ODINPROCEDURE0 ODINPROCEDURENODBG0
[4386]725#define ODINPROCEDURE1 ODINPROCEDURENODBG1
726#define ODINPROCEDURE2 ODINPROCEDURENODBG2
727#define ODINPROCEDURE3 ODINPROCEDURENODBG3
728#define ODINPROCEDURE4 ODINPROCEDURENODBG4
729#define ODINPROCEDURE5 ODINPROCEDURENODBG5
730#define ODINPROCEDURE6 ODINPROCEDURENODBG6
731#define ODINPROCEDURE7 ODINPROCEDURENODBG7
732#define ODINPROCEDURE8 ODINPROCEDURENODBG8
733#define ODINPROCEDURE9 ODINPROCEDURENODBG9
[4377]734#define ODINPROCEDURE10 ODINPROCEDURENODBG10
735#define ODINPROCEDURE11 ODINPROCEDURENODBG11
736#define ODINPROCEDURE12 ODINPROCEDURENODBG12
737#define ODINPROCEDURE13 ODINPROCEDURENODBG13
738#define ODINPROCEDURE14 ODINPROCEDURENODBG14
[473]739
[475]740#endif
741
[1669]742/****************************************************************************
743 * General Wrapper Macros *
744 ****************************************************************************/
745
[5759]746
[1669]747/* ---------- 0 parameters ---------- */
[5759]748#define ODINFUNCTIONNODBG0(cRet,cName) \
749 cRet ODIN_INTERNAL ODIN_##cName (void); \
750 cRet WINAPI cName(void) \
751 { \
752 FNPROLOGUE(#cName) \
753 cRet rc = ODIN_##cName(); \
754 FNEPILOGUE(#cName) \
755 return rc; \
756 } \
757 \
758 cRet ODIN_INTERNAL ODIN_##cName (void)
[1669]759
[5759]760
761#define ODINPROCEDURENODBG0(cName) \
762 void ODIN_INTERNAL ODIN_##cName (void); \
763 void WINAPI cName(void) \
764 { \
765 FNPROLOGUE(#cName) \
766 ODIN_##cName(); \
767 FNEPILOGUE(#cName) \
768 } \
769 \
770 void ODIN_INTERNAL ODIN_##cName (void)
771
772
[1669]773/* ---------- 1 parameters ---------- */
[5759]774#define ODINFUNCTIONNODBG1(cRet,cName,t1,a1) \
775 cRet ODIN_INTERNAL ODIN_##cName (t1 a1); \
776 cRet WINAPI cName(t1 a1) \
777 { \
778 FNPROLOGUE(#cName) \
779 cRet rc = ODIN_##cName(a1); \
780 FNEPILOGUE(#cName) \
781 return rc; \
782 } \
783 \
784 cRet ODIN_INTERNAL ODIN_##cName (t1 a1)
[1669]785
[5759]786#define ODINPROCEDURENODBG1(cName,t1,a1) \
787 void ODIN_INTERNAL ODIN_##cName (t1 a1); \
788 void WINAPI cName(t1 a1) \
789 { \
790 FNPROLOGUE(#cName) \
791 ODIN_##cName(a1); \
792 FNEPILOGUE(#cName) \
793 } \
794 \
795 void ODIN_INTERNAL ODIN_##cName (t1 a1)
796
797
[1669]798/* ---------- 2 parameters ---------- */
[5759]799#define ODINFUNCTIONNODBG2(cRet,cName,t1,a1,t2,a2) \
800 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2); \
801 cRet WINAPI cName(t1 a1,t2 a2) \
802 { \
803 FNPROLOGUE(#cName) \
804 cRet rc = ODIN_##cName(a1,a2); \
805 FNEPILOGUE(#cName) \
806 return rc; \
807 } \
808 \
809 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2)
[1669]810
[5759]811#define ODINPROCEDURENODBG2(cName,t1,a1,t2,a2) \
812 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2); \
813 void WINAPI cName(t1 a1,t2 a2) \
814 { \
815 FNPROLOGUE(#cName) \
816 ODIN_##cName(a1,a2); \
817 FNEPILOGUE(#cName) \
818 } \
819 \
820 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2)
821
822
[1669]823/* ---------- 3 parameters ---------- */
[5759]824#define ODINFUNCTIONNODBG3(cRet,cName,t1,a1,t2,a2,t3,a3) \
825 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3); \
826 cRet WINAPI cName(t1 a1,t2 a2,t3 a3) \
827 { \
828 FNPROLOGUE(#cName) \
829 cRet rc = ODIN_##cName(a1,a2,a3); \
830 FNEPILOGUE(#cName) \
831 return rc; \
832 } \
833 \
834 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3)
[1669]835
[5759]836#define ODINPROCEDURENODBG3(cName,t1,a1,t2,a2,t3,a3) \
837 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3); \
838 void WINAPI cName(t1 a1,t2 a2,t3 a3) \
839 { \
840 FNPROLOGUE(#cName) \
841 ODIN_##cName(a1,a2,a3); \
842 FNEPILOGUE(#cName) \
843 } \
844 \
845 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3)
846
847
[1669]848/* ---------- 4 parameters ---------- */
[5759]849#define ODINFUNCTIONNODBG4(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4) \
850 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4); \
851 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4) \
852 { \
853 FNPROLOGUE(#cName) \
854 cRet rc = ODIN_##cName(a1,a2,a3,a4); \
855 FNEPILOGUE(#cName) \
856 return rc; \
857 } \
858 \
859 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4)
[1669]860
[5759]861#define ODINPROCEDURENODBG4(cName,t1,a1,t2,a2,t3,a3,t4,a4) \
862 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4); \
863 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4) \
864 { \
865 FNPROLOGUE(#cName) \
866 ODIN_##cName(a1,a2,a3,a4); \
867 FNEPILOGUE \
868 } \
869 \
870 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4)
871
872
[1669]873/* ---------- 5 parameters ---------- */
[5759]874#define ODINFUNCTIONNODBG5(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5) \
875 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5); \
876 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5) \
877 { \
878 FNPROLOGUE(#cName) \
879 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5); \
880 FNEPILOGUE(#cName) \
881 return rc; \
882 } \
883 \
884 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5)
[1669]885
[5759]886#define ODINPROCEDURENODBG5(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5) \
887 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5); \
888 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5) \
889 { \
890 FNPROLOGUE(#cName) \
891 ODIN_##cName(a1,a2,a3,a4,a5); \
892 FNEPILOGUE \
893 } \
894 \
895 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5)
896
897
[1669]898/* ---------- 6 parameters ---------- */
[5759]899#define ODINFUNCTIONNODBG6(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6) \
900 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6); \
901 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6) \
902 { \
903 FNPROLOGUE(#cName) \
904 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6); \
905 FNEPILOGUE(#cName) \
906 return rc; \
907 } \
908 \
909 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6)
[1669]910
[5759]911#define ODINPROCEDURENODBG6(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6) \
912 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6); \
913 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6) \
914 { \
915 FNPROLOGUE(#cName) \
916 ODIN_##cName(a1,a2,a3,a4,a5,a6); \
917 FNEPILOGUE \
918 } \
919 \
920 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6)
921
922
[1669]923/* ---------- 7 parameters ---------- */
[5759]924#define ODINFUNCTIONNODBG7(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7) \
925 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7); \
926 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7) \
927 { \
928 FNPROLOGUE(#cName) \
929 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7); \
930 FNEPILOGUE(#cName) \
931 return rc; \
932 } \
933 \
934 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7)
[1669]935
[5759]936#define ODINPROCEDURENODBG7(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7) \
937 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7); \
938 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7) \
939 { \
940 FNPROLOGUE(#cName) \
941 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7); \
942 FNEPILOGUE \
943 } \
944 \
945 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7)
946
947
[1669]948/* ---------- 8 parameters ---------- */
[5759]949#define ODINFUNCTIONNODBG8(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8) \
950 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8); \
951 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8) \
952 { \
953 FNPROLOGUE(#cName) \
954 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8); \
955 FNEPILOGUE(#cName) \
956 return rc; \
957 } \
958 \
959 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8)
[1669]960
[5759]961#define ODINPROCEDURENODBG8(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8) \
962 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8); \
963 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8) \
964 { \
965 FNPROLOGUE(#cName) \
966 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8); \
967 FNEPILOGUE \
968 } \
969 \
970 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8)
971
972
[1669]973/* ---------- 9 parameters ---------- */
[5759]974#define ODINFUNCTIONNODBG9(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9) \
975 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9); \
976 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9) \
977 { \
978 FNPROLOGUE(#cName) \
979 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9); \
980 FNEPILOGUE(#cName) \
981 return rc; \
982 } \
983 \
984 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9)
[1669]985
[5759]986#define ODINPROCEDURENODBG9(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9) \
987 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9); \
988 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9) \
989 { \
990 FNPROLOGUE(#cName) \
991 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9); \
992 FNEPILOGUE \
993 } \
994 \
995 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9)
996
997
[1669]998/* ---------- 10 parameters ---------- */
[5759]999#define ODINFUNCTIONNODBG10(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10) \
1000 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); \
1001 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10) \
1002 { \
1003 FNPROLOGUE(#cName) \
1004 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10); \
1005 FNEPILOGUE(#cName) \
1006 return rc; \
1007 } \
1008 \
1009 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)
[1669]1010
[5759]1011#define ODINPROCEDURENODBG10(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10) \
1012 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); \
1013 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10) \
1014 { \
1015 FNPROLOGUE(#cName) \
1016 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10); \
1017 FNEPILOGUE \
1018 } \
1019 \
1020 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)
1021
1022
[1669]1023/* ---------- 11 parameters ---------- */
[5759]1024#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) \
1025 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); \
1026 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) \
1027 { \
1028 FNPROLOGUE(#cName) \
1029 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11); \
1030 FNEPILOGUE(#cName) \
1031 return rc; \
1032 } \
1033 \
1034 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)
[1669]1035
[5759]1036#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) \
1037 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); \
1038 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) \
1039 { \
1040 FNPROLOGUE(#cName) \
1041 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11); \
1042 FNEPILOGUE \
1043 } \
1044 \
1045 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)
1046
1047
[1669]1048/* ---------- 12 parameters ---------- */
[5759]1049#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) \
1050 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); \
1051 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) \
1052 { \
1053 FNPROLOGUE(#cName) \
1054 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12); \
1055 FNEPILOGUE(#cName) \
1056 return rc; \
1057 } \
1058 \
1059 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)
[1669]1060
[5759]1061#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) \
1062 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); \
1063 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) \
1064 { \
1065 FNPROLOGUE(#cName) \
1066 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12); \
1067 FNEPILOGUE \
1068 } \
1069 \
1070 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)
1071
1072
[1696]1073/* ---------- 13 parameters ---------- */
1074#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) \
[5759]1075 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); \
1076 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) \
1077 { \
1078 FNPROLOGUE(#cName) \
1079 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13); \
1080 FNEPILOGUE(#cName) \
1081 return rc; \
1082 } \
1083 \
1084 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)
[1669]1085
[1696]1086#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) \
[5759]1087 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); \
1088 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) \
1089 { \
1090 FNPROLOGUE(#cName) \
1091 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13); \
1092 FNEPILOGUE \
1093 } \
1094 \
1095 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)
[1669]1096
[5759]1097
[1696]1098/* ---------- 14 parameters ---------- */
1099#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) \
[5759]1100 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); \
1101 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) \
1102 { \
1103 FNPROLOGUE(#cName) \
1104 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14); \
1105 FNEPILOGUE(#cName) \
1106 return rc; \
1107 } \
1108 \
1109 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)
[1696]1110
1111#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) \
[5759]1112 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); \
1113 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) \
1114 { \
1115 FNPROLOGUE(#cName) \
1116 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14); \
1117 FNEPILOGUE \
1118 } \
1119 \
1120 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]1121
[473]1122#endif /* _ODINWRAP_H_ */
Note: See TracBrowser for help on using the repository browser.