source: trunk/include/odinwrap.h@ 2244

Last change on this file since 2244 was 2241, checked in by phaller, 26 years ago

Add: ODINFUNCTION6FS macro to save FS selector

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