OSDN Git Service

* include/*: Add combined winsup/mingw and winsup/w32api include files.
[mingw/mingw-org-wsl.git] / include / windef.h
1 #ifndef _WINDEF_H
2 #define _WINDEF_H
3 #if __GNUC__ >=3
4 #pragma GCC system_header
5 #endif
6
7 #ifdef __cplusplus
8 extern "C" {
9 #endif
10
11 #ifndef WINVER
12 #define WINVER 0x0500
13 /*
14  * If you need Win32 API features newer the Win95 and WinNT then you must
15  * define WINVER before including windows.h or any other method of including
16  * the windef.h header.
17  */
18 #endif
19 #ifndef _WIN32_WINNT
20 #define _WIN32_WINNT WINVER
21 /*
22  * There may be the need to define _WIN32_WINNT to a value different from
23  * the value of WINVER.  I don't have any example of why you would do that.
24  * However, if you must then define _WIN32_WINNT to the value required before
25  * including windows.h or any other method of including the windef.h header.
26  */
27 #endif
28 #ifndef WIN32
29 #define WIN32
30 #endif
31 #ifndef _WIN32
32 #define _WIN32
33 #endif
34 #define FAR
35 #define far
36 #define NEAR
37 #define near
38 #ifndef CONST
39 #define CONST const
40 #endif
41 #undef MAX_PATH
42 #define MAX_PATH 260
43
44 #ifndef NULL
45 #ifdef __cplusplus
46 #define NULL 0
47 #else
48 #define NULL ((void*)0)
49 #endif
50 #endif
51 #ifndef FALSE
52 #define FALSE 0
53 #endif
54 #ifndef TRUE
55 #define TRUE 1
56 #endif
57
58 /* Pseudo modifiers for parameters
59    We don't use these unnecessary defines in the w32api headers. Define
60    them by default since that is what people expect, but allow users
61    to avoid the pollution.  */
62 #ifndef _NO_W32_PSEUDO_MODIFIERS
63 #define IN
64 #define OUT
65 #ifndef OPTIONAL
66 #define OPTIONAL
67 #endif
68 #endif
69
70 #ifdef __GNUC__
71 #ifndef _fastcall
72 #define _fastcall __attribute__((fastcall))
73 #endif
74 #ifndef __fastcall
75 #define __fastcall __attribute__((fastcall))
76 #endif
77 #ifndef _stdcall
78 #define _stdcall __attribute__((stdcall))
79 #endif
80 #ifndef __stdcall
81 #define __stdcall __attribute__((stdcall))
82 #endif
83 #ifndef _cdecl
84 #define _cdecl __attribute__((cdecl))
85 #endif
86 #ifndef __cdecl
87 #define __cdecl __attribute__((cdecl))
88 #endif
89 #ifndef __declspec
90 #define __declspec(e) __attribute__((e))
91 #endif
92 #ifndef _declspec
93 #define _declspec(e) __attribute__((e))
94 #endif
95 #else
96 #define _cdecl
97 #define __cdecl
98 #endif
99
100 #undef pascal
101 #undef _pascal
102 #undef __pascal
103 #define pascal __stdcall
104 #define _pascal __stdcall
105 #define __pascal __stdcall
106 #define PASCAL _pascal
107 #define CDECL _cdecl
108 #define STDCALL __stdcall
109 #define FASTCALL __fastcall
110 #define WINAPI __stdcall
111 #define WINAPIV __cdecl
112 #define APIENTRY __stdcall
113 #define CALLBACK __stdcall
114 #define APIPRIVATE __stdcall
115
116 #define DECLSPEC_IMPORT __declspec(dllimport)
117 #define DECLSPEC_EXPORT __declspec(dllexport)
118 #ifdef __GNUC__
119 #define DECLSPEC_NORETURN __declspec(noreturn)
120 #define DECLARE_STDCALL_P( type ) __stdcall type
121 #elif defined(__WATCOMC__)
122 #define DECLSPEC_NORETURN
123 #define DECLARE_STDCALL_P( type ) type __stdcall
124 #endif /* __GNUC__/__WATCOMC__ */
125 #define MAKEWORD(a,b)   ((WORD)(((BYTE)(a))|(((WORD)((BYTE)(b)))<<8)))
126 #define MAKELONG(a,b)   ((LONG)(((WORD)(a))|(((DWORD)((WORD)(b)))<<16)))
127 #define LOWORD(l)       ((WORD)((DWORD)(l)))
128 #define HIWORD(l)       ((WORD)(((DWORD)(l)>>16)&0xFFFF))
129 #define LOBYTE(w)       ((BYTE)(w))
130 #define HIBYTE(w)       ((BYTE)(((WORD)(w)>>8)&0xFF))
131
132 #ifndef __WATCOMC__
133 #ifndef _export
134 #define _export
135 #endif
136 #ifndef __export
137 #define __export
138 #endif
139 #endif
140
141 #ifndef NOMINMAX
142 #ifndef max
143 #define max(a,b) ((a)>(b)?(a):(b))
144 #endif
145 #ifndef min
146 #define min(a,b) ((a)<(b)?(a):(b))
147 #endif
148 #endif
149
150 #define UNREFERENCED_PARAMETER(P) {(P)=(P);}
151 #define UNREFERENCED_LOCAL_VARIABLE(L) {(L)=(L);}
152 #define DBG_UNREFERENCED_PARAMETER(P)
153 #define DBG_UNREFERENCED_LOCAL_VARIABLE(L)
154
155 #ifndef NONAMELESSUNION
156 #ifdef __GNUC__
157 #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95)
158 #define _ANONYMOUS_UNION __extension__
159 #define _ANONYMOUS_STRUCT __extension__
160 #else
161 #if defined(__cplusplus)
162 #define _ANONYMOUS_UNION __extension__
163 #endif /* __cplusplus */
164 #endif /* __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95) */
165 #elif defined(__WATCOMC__)
166 #define _ANONYMOUS_UNION
167 #define _ANONYMOUS_STRUCT
168 #endif /* __GNUC__/__WATCOMC__ */
169 #endif /* NONAMELESSUNION */
170
171 #ifndef _ANONYMOUS_UNION
172 #define _ANONYMOUS_UNION
173 #define _UNION_NAME(x) x
174 #define DUMMYUNIONNAME  u
175 #define DUMMYUNIONNAME2 u2
176 #define DUMMYUNIONNAME3 u3
177 #define DUMMYUNIONNAME4 u4
178 #define DUMMYUNIONNAME5 u5
179 #define DUMMYUNIONNAME6 u6
180 #define DUMMYUNIONNAME7 u7
181 #define DUMMYUNIONNAME8 u8
182 #else
183 #define _UNION_NAME(x)
184 #define DUMMYUNIONNAME
185 #define DUMMYUNIONNAME2
186 #define DUMMYUNIONNAME3
187 #define DUMMYUNIONNAME4
188 #define DUMMYUNIONNAME5
189 #define DUMMYUNIONNAME6
190 #define DUMMYUNIONNAME7
191 #define DUMMYUNIONNAME8
192 #endif
193 #ifndef _ANONYMOUS_STRUCT
194 #define _ANONYMOUS_STRUCT
195 #define _STRUCT_NAME(x) x
196 #define DUMMYSTRUCTNAME s
197 #define DUMMYSTRUCTNAME2 s2
198 #define DUMMYSTRUCTNAME3 s3
199 #else
200 #define _STRUCT_NAME(x)
201 #define DUMMYSTRUCTNAME
202 #define DUMMYSTRUCTNAME2
203 #define DUMMYSTRUCTNAME3
204 #endif
205
206 #ifndef NO_STRICT
207 #ifndef STRICT
208 #define STRICT 1
209 #endif
210 #endif
211
212 /* FIXME: This will make some code compile. The programs will most
213    likely crash when an exception is raised, but at least they will
214    compile. */
215 #if defined (__GNUC__) && defined (__SEH_NOOP)
216 #define __try
217 #define __except(x) if (0) /* don't execute handler */
218 #define __finally
219
220 #define _try __try
221 #define _except __except
222 #define _finally __finally
223 #endif
224
225 typedef unsigned long DWORD;
226 typedef int WINBOOL,*PWINBOOL,*LPWINBOOL;
227 /* FIXME: Is there a good solution to this? */
228 #ifndef XFree86Server
229 #ifndef __OBJC__
230 typedef WINBOOL BOOL;
231 #else
232 #define BOOL WINBOOL
233 #endif
234 typedef unsigned char BYTE;
235 #endif /* ndef XFree86Server */
236 typedef BOOL *PBOOL,*LPBOOL;
237 typedef unsigned short WORD;
238 typedef float FLOAT;
239 typedef FLOAT *PFLOAT;
240 typedef BYTE *PBYTE,*LPBYTE;
241 typedef int *PINT,*LPINT;
242 typedef WORD *PWORD,*LPWORD;
243 typedef long *LPLONG;
244 typedef DWORD *PDWORD,*LPDWORD;
245 typedef CONST void *PCVOID,*LPCVOID;
246 typedef int INT;
247 typedef unsigned int UINT,*PUINT,*LPUINT;
248
249 #include <winnt.h>
250
251 typedef UINT_PTR WPARAM;
252 typedef LONG_PTR LPARAM;
253 typedef LONG_PTR LRESULT;
254 #ifndef _HRESULT_DEFINED
255 typedef LONG HRESULT;
256 #define _HRESULT_DEFINED
257 #endif
258 #ifndef XFree86Server
259 typedef WORD ATOM;
260 #endif /* XFree86Server */
261 typedef HANDLE HHOOK;
262 typedef HANDLE HGLOBAL;
263 typedef HANDLE HLOCAL;
264 typedef HANDLE GLOBALHANDLE;
265 typedef HANDLE LOCALHANDLE;
266 typedef void *HGDIOBJ;
267 DECLARE_HANDLE(HACCEL);
268 DECLARE_HANDLE(HBITMAP);
269 DECLARE_HANDLE(HBRUSH);
270 DECLARE_HANDLE(HCOLORSPACE);
271 DECLARE_HANDLE(HDC);
272 DECLARE_HANDLE(HGLRC);
273 DECLARE_HANDLE(HDESK);
274 DECLARE_HANDLE(HENHMETAFILE);
275 DECLARE_HANDLE(HFONT);
276 DECLARE_HANDLE(HICON);
277 DECLARE_HANDLE(HKEY);
278 /* FIXME: How to handle these. SM_CMONITORS etc in winuser.h also. */
279 DECLARE_HANDLE(HMONITOR);
280 #define HMONITOR_DECLARED 1
281 DECLARE_HANDLE(HTERMINAL);
282 DECLARE_HANDLE(HWINEVENTHOOK);
283
284 typedef HKEY *PHKEY;
285 DECLARE_HANDLE(HMENU);
286 DECLARE_HANDLE(HMETAFILE);
287 DECLARE_HANDLE(HINSTANCE);
288 typedef HINSTANCE HMODULE;
289 DECLARE_HANDLE(HPALETTE);
290 DECLARE_HANDLE(HPEN);
291 DECLARE_HANDLE(HRGN);
292 DECLARE_HANDLE(HRSRC);
293 DECLARE_HANDLE(HSTR);
294 DECLARE_HANDLE(HTASK);
295 DECLARE_HANDLE(HWND);
296 DECLARE_HANDLE(HWINSTA);
297 DECLARE_HANDLE(HKL);
298 typedef int HFILE;
299 typedef HICON HCURSOR;
300 typedef DWORD COLORREF;
301 typedef int (WINAPI *FARPROC)();
302 typedef int (WINAPI *NEARPROC)();
303 typedef int (WINAPI *PROC)();
304 typedef struct tagRECT {
305         LONG left;
306         LONG top;
307         LONG right;
308         LONG bottom;
309 } RECT,*PRECT,*LPRECT;
310 typedef const RECT *LPCRECT;
311 typedef struct tagRECTL {
312         LONG left;
313         LONG top;
314         LONG right;
315         LONG bottom;
316 } RECTL,*PRECTL,*LPRECTL;
317 typedef const RECTL *LPCRECTL;
318 typedef struct tagPOINT {
319         LONG x;
320         LONG y;
321 } POINT,POINTL,*PPOINT,*LPPOINT,*PPOINTL,*LPPOINTL;
322 typedef struct tagSIZE {
323         LONG cx;
324         LONG cy;
325 } SIZE,SIZEL,*PSIZE,*LPSIZE,*PSIZEL,*LPSIZEL;
326 typedef struct tagPOINTS {
327         SHORT x;
328         SHORT y;
329 } POINTS,*PPOINTS,*LPPOINTS;
330
331 #ifdef __cplusplus
332 }
333 #endif
334 #endif