ntdll: Improve support for the ProcessDebugPort info class in NtQueryInformationProce...
[wine] / include / windef.h
index d3f0beb..8f5ea30 100644 (file)
  *
  * You should have received a copy of the GNU Lesser General Public
  * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
  */
 
-#ifndef __WINE_WINDEF_H
-#define __WINE_WINDEF_H
-
-#ifdef __WINE__
-# undef UNICODE
-#endif  /* __WINE__ */
+#ifndef _WINDEF_
+#define _WINDEF_
 
+#ifndef WINVER
 #define WINVER 0x0500
+#endif
 
-#include "winnt.h"
-
+#ifndef NO_STRICT
+# ifndef STRICT
+#  define STRICT
+# endif /* STRICT */
+#endif /* NO_STRICT */
 
 #ifdef __cplusplus
 extern "C" {
 #endif
 
+/* Calling conventions definitions */
+
+#if defined(__x86_64__) && !defined(_WIN64)
+#define _WIN64
+#endif
+
+#ifndef _WIN64
+# if defined(__i386__) && !defined(_X86_)
+#  define _X86_
+# endif
+# if defined(_X86_) && !defined(__i386__)
+#  define __i386__
+# endif
+#endif
+
+#ifndef __stdcall
+# ifdef __i386__
+#  ifdef __GNUC__
+#   ifdef __APPLE__ /* Mac OS X uses a 16-byte aligned stack and not a 4-byte one */
+#    define __stdcall __attribute__((__stdcall__)) __attribute__((__force_align_arg_pointer__))
+#   else
+#    define __stdcall __attribute__((__stdcall__))
+#   endif
+#  elif defined(_MSC_VER)
+    /* Nothing needs to be done. __stdcall already exists */
+#  else
+#   error You need to define __stdcall for your compiler
+#  endif
+# elif defined(__x86_64__) && defined (__GNUC__)
+#  define __stdcall __attribute__((ms_abi))
+# else  /* __i386__ */
+#  define __stdcall
+# endif  /* __i386__ */
+#endif /* __stdcall */
+
+#ifndef __cdecl
+# if defined(__i386__) && defined(__GNUC__)
+#  ifdef __APPLE__ /* Mac OS X uses 16-byte aligned stack and not a 4-byte one */
+#   define __cdecl __attribute__((__cdecl__)) __attribute__((__force_align_arg_pointer__))
+#  else
+#   define __cdecl __attribute__((__cdecl__))
+#  endif
+# elif defined(__x86_64__) && defined (__GNUC__)
+#  define __cdecl __attribute__((ms_abi))
+# elif !defined(_MSC_VER)
+#  define __cdecl
+# endif
+#endif /* __cdecl */
+
+#ifndef __ms_va_list
+# if defined(__x86_64__) && defined (__GNUC__)
+#  define __ms_va_list __builtin_ms_va_list
+#  define __ms_va_start(list,arg) __builtin_ms_va_start(list,arg)
+#  define __ms_va_end(list) __builtin_ms_va_end(list)
+# else
+#  define __ms_va_list va_list
+#  define __ms_va_start(list,arg) va_start(list,arg)
+#  define __ms_va_end(list) va_end(list)
+# endif
+#endif
+
+#ifdef __WINESRC__
+#define __ONLY_IN_WINELIB(x)   do_not_use_this_in_wine
+#else
+#define __ONLY_IN_WINELIB(x)   x
+#endif
+
+#ifndef pascal
+#define pascal      __ONLY_IN_WINELIB(__stdcall)
+#endif
+#ifndef _pascal
+#define _pascal            __ONLY_IN_WINELIB(__stdcall)
+#endif
+#ifndef _stdcall
+#define _stdcall    __ONLY_IN_WINELIB(__stdcall)
+#endif
+#ifndef _fastcall
+#define _fastcall   __ONLY_IN_WINELIB(__stdcall)
+#endif
+#ifndef __fastcall
+#define __fastcall  __ONLY_IN_WINELIB(__stdcall)
+#endif
+#ifndef __export
+#define __export    __ONLY_IN_WINELIB(__stdcall)
+#endif
+#ifndef cdecl
+#define cdecl       __ONLY_IN_WINELIB(__cdecl)
+#endif
+#ifndef _cdecl
+#define _cdecl      __ONLY_IN_WINELIB(__cdecl)
+#endif
+
+#ifndef near
+#define near        __ONLY_IN_WINELIB(/* nothing */)
+#endif
+#ifndef far
+#define far         __ONLY_IN_WINELIB(/* nothing */)
+#endif
+#ifndef _near
+#define _near       __ONLY_IN_WINELIB(/* nothing */)
+#endif
+#ifndef _far
+#define _far        __ONLY_IN_WINELIB(/* nothing */)
+#endif
+#ifndef NEAR
+#define NEAR        __ONLY_IN_WINELIB(/* nothing */)
+#endif
+#ifndef FAR
+#define FAR         __ONLY_IN_WINELIB(/* nothing */)
+#endif
+
+#ifndef _MSC_VER
+# ifndef _declspec
+#  define _declspec(x)    __ONLY_IN_WINELIB(/* nothing */)
+# endif
+# ifndef __declspec
+#  define __declspec(x)   __ONLY_IN_WINELIB(/* nothing */)
+# endif
+#endif
+
+#ifdef _MSC_VER
+# define inline __inline
+#endif
+
+#define CALLBACK    __stdcall
+#define WINAPI      __stdcall
+#define APIPRIVATE  __stdcall
+#define PASCAL      __stdcall
+#define CDECL       __cdecl
+#define _CDECL      __cdecl
+#define WINAPIV     __cdecl
+#define APIENTRY    WINAPI
+#define CONST       const
+
+/* Misc. constants. */
+
+#undef NULL
+#ifdef __cplusplus
+#define NULL  0
+#else
+#define NULL  ((void*)0)
+#endif
+
+#ifdef FALSE
+#undef FALSE
+#endif
+#define FALSE 0
+
+#ifdef TRUE
+#undef TRUE
+#endif
+#define TRUE  1
+
+#ifndef IN
+#define IN
+#endif
+
+#ifndef OUT
+#define OUT
+#endif
+
+#ifndef OPTIONAL
+#define OPTIONAL
+#endif
+
+/* Standard data types */
+
+typedef void                                   *LPVOID;
+typedef const void                             *LPCVOID;
+typedef int             BOOL,       *PBOOL,    *LPBOOL;
+typedef unsigned char   BYTE,       *PBYTE,    *LPBYTE;
+typedef unsigned char   UCHAR,      *PUCHAR;
+typedef unsigned short  WORD,       *PWORD,    *LPWORD;
+typedef unsigned short  USHORT,     *PUSHORT;
+typedef int             INT,        *PINT,     *LPINT;
+typedef unsigned int    UINT,       *PUINT;
+typedef float           FLOAT,      *PFLOAT;
+typedef char                        *PSZ;
+#ifdef _MSC_VER
+typedef long                                   *LPLONG;
+typedef unsigned long   DWORD,      *PDWORD,   *LPDWORD;
+typedef unsigned long   ULONG,      *PULONG;
+#else
+typedef int                                    *LPLONG;
+typedef unsigned int    DWORD,      *PDWORD,   *LPDWORD;
+typedef unsigned int    ULONG,      *PULONG;
+#endif
 
 /* Macros to map Winelib names to the correct implementation name */
-/* depending on __WINE__ and UNICODE macros.                      */
 /* Note that Winelib is purely Win32.                             */
 
-#ifdef __WINE__
+#ifdef __WINESRC__
+#define WINE_NO_UNICODE_MACROS 1
+#define WINE_STRICT_PROTOTYPES 1
+#endif
+
+#ifdef WINE_NO_UNICODE_MACROS
 # define WINELIB_NAME_AW(func) \
     func##_must_be_suffixed_with_W_or_A_in_this_context \
     func##_must_be_suffixed_with_W_or_A_in_this_context
-#else  /* __WINE__ */
+#else  /* WINE_NO_UNICODE_MACROS */
 # ifdef UNICODE
 #  define WINELIB_NAME_AW(func) func##W
 # else
 #  define WINELIB_NAME_AW(func) func##A
-# endif  /* UNICODE */
-#endif  /* __WINE__ */
+# endif
+#endif  /* WINE_NO_UNICODE_MACROS */
 
-#ifdef __WINE__
+#ifdef WINE_NO_UNICODE_MACROS
 # define DECL_WINELIB_TYPE_AW(type)  /* nothing */
-#else   /* __WINE__ */
+#else
 # define DECL_WINELIB_TYPE_AW(type)  typedef WINELIB_NAME_AW(type) type;
-#endif  /* __WINE__ */
+#endif
+
+#include <winnt.h>
 
+/* Polymorphic types */
+
+typedef UINT_PTR        WPARAM;
+typedef LONG_PTR        LPARAM;
+typedef LONG_PTR        LRESULT;
 
 /* Integer types */
-typedef UINT            WPARAM;
-typedef LONG            LPARAM;
-typedef LONG            LRESULT;
+
 typedef WORD            ATOM;
-typedef WORD            CATCHBUF[9];
-typedef WORD           *LPCATCHBUF;
 typedef DWORD           COLORREF, *LPCOLORREF;
 
 
-/* Handle types that exist both in Win16 and Win32. */
+/* Handle types */
 
 typedef int HFILE;
-DECLARE_OLD_HANDLE(HACCEL);
-DECLARE_OLD_HANDLE(HBITMAP);
-DECLARE_OLD_HANDLE(HBRUSH);
+DECLARE_HANDLE(HACCEL);
+DECLARE_HANDLE(HBITMAP);
+DECLARE_HANDLE(HBRUSH);
 DECLARE_HANDLE(HCOLORSPACE);
-DECLARE_OLD_HANDLE(HDC);
+DECLARE_HANDLE(HDC);
 DECLARE_HANDLE(HDESK);
-DECLARE_OLD_HANDLE(HENHMETAFILE);
-DECLARE_OLD_HANDLE(HFONT);
-DECLARE_OLD_HANDLE(HHOOK);
-DECLARE_OLD_HANDLE(HICON);
-DECLARE_OLD_HANDLE(HINSTANCE);
-DECLARE_OLD_HANDLE(HKEY);
-DECLARE_OLD_HANDLE(HKL);
-DECLARE_OLD_HANDLE(HMENU);
-DECLARE_OLD_HANDLE(HMETAFILE);
-DECLARE_OLD_HANDLE(HMONITOR);
-DECLARE_OLD_HANDLE(HPALETTE);
-DECLARE_OLD_HANDLE(HPEN);
-DECLARE_OLD_HANDLE(HRGN);
-DECLARE_OLD_HANDLE(HRSRC);
-DECLARE_OLD_HANDLE(HTASK);
+DECLARE_HANDLE(HENHMETAFILE);
+DECLARE_HANDLE(HFONT);
+DECLARE_HANDLE(HGLRC);
+DECLARE_HANDLE(HHOOK);
+DECLARE_HANDLE(HICON);
+DECLARE_HANDLE(HINSTANCE);
+DECLARE_HANDLE(HKEY);
+typedef HKEY *PHKEY;
+DECLARE_HANDLE(HKL);
+DECLARE_HANDLE(HMENU);
+DECLARE_HANDLE(HMETAFILE);
+DECLARE_HANDLE(HMONITOR);
+DECLARE_HANDLE(HPALETTE);
+DECLARE_HANDLE(HPEN);
+DECLARE_HANDLE(HRGN);
+DECLARE_HANDLE(HRSRC);
+DECLARE_HANDLE(HTASK);
+DECLARE_HANDLE(HWINEVENTHOOK);
 DECLARE_HANDLE(HWINSTA);
-DECLARE_OLD_HANDLE(HWND);
+DECLARE_HANDLE(HWND);
 
 /* Handle types that must remain interchangeable even with strict on */
 
@@ -107,37 +305,26 @@ typedef HICON HCURSOR;
 
 /* Callback function pointers types */
 
-typedef INT     (CALLBACK *FARPROC)();
-typedef INT     (CALLBACK *PROC)();
-
+#ifdef WINE_STRICT_PROTOTYPES
+typedef INT_PTR (CALLBACK *FARPROC)(void);
+typedef INT_PTR (CALLBACK *NEARPROC)(void);
+typedef INT_PTR (CALLBACK *PROC)(void);
+#else
+typedef INT_PTR (CALLBACK *FARPROC)();
+typedef INT_PTR (CALLBACK *NEARPROC)();
+typedef INT_PTR (CALLBACK *PROC)();
+#endif
 
 /* Macros to split words and longs. */
 
-#define LOBYTE(w)              ((BYTE)(WORD)(w))
-#define HIBYTE(w)              ((BYTE)((WORD)(w) >> 8))
-
-#define LOWORD(l)              ((WORD)(DWORD)(l))
-#define HIWORD(l)              ((WORD)((DWORD)(l) >> 16))
+#define LOBYTE(w)              ((BYTE)((DWORD_PTR)(w) & 0xFF))
+#define HIBYTE(w)              ((BYTE)((DWORD_PTR)(w) >> 8))
 
-#define SLOWORD(l)             ((SHORT)(LONG)(l))
-#define SHIWORD(l)             ((SHORT)((LONG)(l) >> 16))
+#define LOWORD(l)              ((WORD)((DWORD_PTR)(l) & 0xFFFF))
+#define HIWORD(l)              ((WORD)((DWORD_PTR)(l) >> 16))
 
-#define MAKEWORD(low,high)     ((WORD)(((BYTE)(low)) | ((WORD)((BYTE)(high))) << 8))
-#define MAKELONG(low,high)     ((LONG)(((WORD)(low)) | (((DWORD)((WORD)(high))) << 16)))
-#define MAKELPARAM(low,high)   ((LPARAM)MAKELONG(low,high))
-#define MAKEWPARAM(low,high)   ((WPARAM)MAKELONG(low,high))
-#define MAKELRESULT(low,high)  ((LRESULT)MAKELONG(low,high))
-
-#define SELECTOROF(ptr)     (HIWORD(ptr))
-#define OFFSETOF(ptr)       (LOWORD(ptr))
-
-#ifdef __WINE__
-/* macros to set parts of a DWORD (not in the Windows API) */
-#define SET_LOWORD(dw,val)  ((dw) = ((dw) & 0xffff0000) | LOWORD(val))
-#define SET_LOBYTE(dw,val)  ((dw) = ((dw) & 0xffffff00) | LOBYTE(val))
-#define SET_HIBYTE(dw,val)  ((dw) = ((dw) & 0xffff00ff) | (LOBYTE(val) << 8))
-#define ADD_LOWORD(dw,val)  ((dw) = ((dw) & 0xffff0000) | LOWORD((DWORD)(dw)+(val)))
-#endif
+#define MAKEWORD(low,high)     ((WORD)(((BYTE)((DWORD_PTR)(low) & 0xFF)) | ((WORD)((BYTE)((DWORD_PTR)(high) & 0xFF))) << 8))
+#define MAKELONG(low,high)     ((LONG)(((WORD)((DWORD_PTR)(low) & 0xFFFF)) | ((DWORD)((WORD)((DWORD_PTR)(high) & 0xFFFF))) << 16))
 
 /* min and max macros */
 #ifndef NOMINMAX
@@ -149,17 +336,11 @@ typedef INT     (CALLBACK *PROC)();
 #endif
 #endif  /* NOMINMAX */
 
-#ifndef _MAX_PATH
-/* FIXME: These are supposed to be in stdlib.h only */
-#define _MAX_DRIVE          3
-#define _MAX_FNAME          256
-#define _MAX_DIR            _MAX_FNAME
-#define _MAX_EXT            _MAX_FNAME
-#define _MAX_PATH           260
-#endif
-#define MAX_PATH            _MAX_PATH
-
+#ifdef MAX_PATH /* Work-around for Mingw */ 
+#undef MAX_PATH
+#endif /* MAX_PATH */
 
+#define MAX_PATH        260
 #define HFILE_ERROR     ((HFILE)-1)
 
 /* The SIZE structure */
@@ -182,28 +363,43 @@ typedef struct _POINTL
 {
     LONG x;
     LONG y;
-} POINTL;
+} POINTL, *PPOINTL;
 
 /* The POINTS structure */
 
 typedef struct tagPOINTS
 {
+#ifdef WORDS_BIGENDIAN
+    SHORT y;
+    SHORT x;
+#else
     SHORT x;
     SHORT y;
+#endif
 } POINTS, *PPOINTS, *LPPOINTS;
 
+typedef struct _FILETIME {
+#ifdef WORDS_BIGENDIAN
+    DWORD  dwHighDateTime;
+    DWORD  dwLowDateTime;
+#else
+    DWORD  dwLowDateTime;
+    DWORD  dwHighDateTime;
+#endif
+} FILETIME, *PFILETIME, *LPFILETIME;
+#define _FILETIME_
+
 /* The RECT structure */
 typedef struct tagRECT
 {
-    INT  left;
-    INT  top;
-    INT  right;
-    INT  bottom;
+    LONG left;
+    LONG top;
+    LONG right;
+    LONG bottom;
 } RECT, *PRECT, *LPRECT;
 typedef const RECT *LPCRECT;
 
-
-typedef struct tagRECTL
+typedef struct _RECTL
 {
     LONG left;
     LONG top;
@@ -217,4 +413,4 @@ typedef const RECTL *LPCRECTL;
 }
 #endif
 
-#endif /* __WINE_WINDEF_H */
+#endif /* _WINDEF_ */