Release 970914
[wine] / include / callback.h
1 /*
2  * Callback functions
3  *
4  * Copyright 1995 Alexandre Julliard
5  */
6
7 #ifndef __WINE_CALLBACK_H
8 #define __WINE_CALLBACK_H
9
10 #include "wintypes.h"
11 #include "winnt.h"
12
13 extern int (*IF1632_CallLargeStack)( int (*func)(), void *arg );
14
15 #define CALL_LARGE_STACK(func,arg) \
16     (IF1632_CallLargeStack ? \
17      IF1632_CallLargeStack( (int(*)())(func), (void *)(arg) ) : \
18      ((int(*)())(func))((void *)arg))
19
20 /* List of the 16-bit callback functions. This list is used  */
21 /* by the build program to generate the file if1632/callto16.S */
22
23 #ifndef WINELIB
24
25 extern LONG CALLBACK CallTo16_regs_     (const CONTEXT *context);
26 extern WORD CALLBACK CallTo16_word_     (FARPROC16);
27 extern WORD CALLBACK CallTo16_word_w    (FARPROC16,WORD);
28 extern LONG CALLBACK CallTo16_long_l    (FARPROC16,LONG);
29 extern WORD CALLBACK CallTo16_word_ww   (FARPROC16,WORD,WORD);
30 extern WORD CALLBACK CallTo16_word_wl   (FARPROC16,WORD,LONG);
31 extern WORD CALLBACK CallTo16_word_ll   (FARPROC16,LONG,LONG);
32 extern WORD CALLBACK CallTo16_word_www  (FARPROC16,WORD,WORD,WORD);
33 extern WORD CALLBACK CallTo16_word_wwl  (FARPROC16,WORD,WORD,LONG);
34 extern WORD CALLBACK CallTo16_word_wlw  (FARPROC16,WORD,LONG,WORD);
35 extern LONG CALLBACK CallTo16_long_wwl  (FARPROC16,WORD,WORD,LONG);
36 extern WORD CALLBACK CallTo16_word_llwl (FARPROC16,LONG,LONG,WORD,LONG);
37 extern WORD CALLBACK CallTo16_word_lwll (FARPROC16,LONG,WORD,LONG,LONG);
38 extern LONG CALLBACK CallTo16_long_wwwl (FARPROC16,WORD,WORD,WORD,LONG);
39 extern LONG CALLBACK CallTo16_wndp_wwwl (FARPROC16,WORD,WORD,WORD,LONG);
40 extern WORD CALLBACK CallTo16_word_lwww (FARPROC16,LONG,WORD,WORD,WORD);
41 extern WORD CALLBACK CallTo16_word_wwll (FARPROC16,WORD,WORD,LONG,LONG);
42 extern WORD CALLBACK CallTo16_word_wllwl(FARPROC16,WORD,LONG,LONG,WORD,LONG);
43 extern LONG CALLBACK CallTo16_long_lwwll(FARPROC16,LONG,WORD,WORD,LONG,LONG);
44 extern WORD CALLBACK CallTo16_word_wwlll(FARPROC16,WORD,WORD,LONG,LONG,LONG);
45 extern WORD CALLBACK CallTo16_word_wwwww(FARPROC16,WORD,WORD,WORD,WORD,WORD);
46 extern LONG CALLBACK CallTo16_wndp_lllllllwlwwwl(FARPROC16,LONG,LONG,LONG,LONG,
47                                                  LONG,LONG,LONG,WORD,LONG,WORD,
48                                                  WORD,WORD,LONG);
49 extern WORD CALLBACK CallTo16_word_lwlll(FARPROC16,LONG,WORD,LONG,LONG,LONG);
50 extern WORD CALLBACK CallTo16_word_llll (FARPROC16,LONG,LONG,LONG,LONG);
51 extern LONG CALLBACK CallTo16_long_lwlll(FARPROC16,LONG,WORD,LONG,LONG,LONG);
52 extern LONG CALLBACK CallTo16_long_lwwllwlllllw(FARPROC16,LONG,WORD,WORD,LONG,
53                                                 LONG,WORD,LONG,LONG,LONG,LONG,
54                                                 LONG,WORD);
55
56 #define CallDriverProc( func, dwId, msg, hdrvr, lparam1, lparam2 ) \
57     CallTo16_long_lwwll( func, dwId, msg, hdrvr, lparam1, lparam2 )
58 #define CallDriverCallback( func, hdev, msg, user, lparam1, lparam2 ) \
59     CallTo16_word_wwlll( func, hdev, msg, user, lparam1, lparam2 )
60 #define CallTimeFuncProc( func, id, msg, dwUser, dw1, dw2 ) \
61     CallTo16_word_wwlll( func, id, msg, dwUser, dw1, dw2 )
62 #define CallWindowsExitProc( func, nExitType ) \
63     CallTo16_word_w( func, nExitType )
64 #define CallWordBreakProc16( func, lpch, ichCurrent, cch, code ) \
65     CallTo16_word_lwww( func, lpch, ichCurrent, cch, code )
66
67
68 /* List of the 32-bit callback functions. This list is used  */
69 /* by the build program to generate the file if1632/callto32.S */
70
71 extern LONG CALLBACK CallTo32_0( FARPROC32 );
72 extern LONG CALLBACK CallTo32_1( FARPROC32, DWORD );
73 extern LONG CALLBACK CallTo32_2( FARPROC32, DWORD, DWORD );
74 extern LONG CALLBACK CallTo32_3( FARPROC32, DWORD, DWORD, DWORD );
75 extern LONG CALLBACK CallTo32_4( FARPROC32, DWORD, DWORD, DWORD, DWORD );
76 extern LONG CALLBACK CallTo32_5( FARPROC32, DWORD, DWORD, DWORD, DWORD, DWORD );
77 extern LONG CALLBACK CallTo32_6( FARPROC32, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD );
78 extern LONG CALLBACK CallTo32_7( FARPROC32, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD );
79 extern LONG CALLBACK CallTo32_8( FARPROC32, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD );
80 extern LONG CALLBACK CallTo32_9( FARPROC32, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD );
81 extern LONG CALLBACK CallTo32_10( FARPROC32, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD );
82 extern LONG CALLBACK CallTo32_11( FARPROC32, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD );
83 extern LONG CALLBACK CallTo32_12( FARPROC32, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD );
84 extern LONG CALLBACK CallTo32_13( FARPROC32, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD );
85
86 #else  /* WINELIB */
87
88 #define CallDriverProc( func, dwId, msg, hdrvr, lparam1, lparam2 ) \
89     (*func)( dwId, msg, hdrvr, lparam1, lparam2 )
90 #define CallDriverCallback( func, hdev, msg, user, lparam1, lparam2 ) \
91     (*func)( hdev, msg, user, lparam1, lparam2 )
92 #define CallTimeFuncProc( func, id, msg, dwUser, dw1, dw2 ) \
93     (*func)( id, msg, dwUser, dw1, dw2 )
94 #define CallWindowsExitProc( func, nExitType ) \
95     (*func)( nExitType )
96 #define CallWordBreakProc16( func, lpch, ichCurrent, cch, code ) \
97     (*func)( lpch, ichCurrent, cch, code )
98
99 #endif  /* WINELIB */
100
101
102 #endif /* __WINE_CALLBACK_H */