123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347 |
- /*
- * Basic types definitions
- *
- * Copyright 1996 Alexandre Julliard
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * 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
- */
- #ifndef _WINDEF_
- #define _WINDEF_
- #ifndef WINVER
- #define WINVER 0x0500
- #endif
- #ifndef NO_STRICT
- # ifndef STRICT
- # define STRICT
- # endif /* STRICT */
- #endif /* NO_STRICT */
- #ifdef __cplusplus
- extern "C" {
- #endif
- /* Calling conventions definitions */
- #if defined(__i386__) && !defined(_X86_)
- # define _X86_
- #endif
- #ifndef __stdcall
- # ifdef __i386__
- # ifdef __GNUC__
- # define __stdcall __attribute__((__stdcall__))
- # elif defined(_MSC_VER)
- /* Nothing needs to be done. __stdcall already exists */
- # else
- # error You need to define __stdcall for your compiler
- # endif
- # else /* __i386__ */
- # define __stdcall
- # endif /* __i386__ */
- #endif /* __stdcall */
- #ifndef __cdecl
- # if defined(__i386__) && defined(__GNUC__)
- # define __cdecl __attribute__((__cdecl__))
- # elif !defined(_MSC_VER)
- # define __cdecl
- # endif
- #endif /* __stdcall */
- #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()
- #endif
- #ifndef far
- #define far __ONLY_IN_WINELIB()
- #endif
- #ifndef _near
- #define _near __ONLY_IN_WINELIB()
- #endif
- #ifndef _far
- #define _far __ONLY_IN_WINELIB()
- #endif
- #ifndef NEAR
- #define NEAR __ONLY_IN_WINELIB()
- #endif
- #ifndef FAR
- #define FAR __ONLY_IN_WINELIB()
- #endif
- #ifndef _MSC_VER
- # ifndef _declspec
- # define _declspec(x) __ONLY_IN_WINELIB()
- # endif
- # ifndef __declspec
- # define __declspec(x) __ONLY_IN_WINELIB()
- # endif
- #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 long *LPLONG;
- typedef unsigned long DWORD, *PDWORD, *LPDWORD;
- typedef unsigned long ULONG, *PULONG;
- typedef float FLOAT, *PFLOAT;
- typedef char *PSZ;
- /* Macros to map Winelib names to the correct implementation name */
- /* Note that Winelib is purely Win32. */
- #ifdef __WINESRC__
- # 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 /* __WINESRC__ */
- # ifdef UNICODE
- # define WINELIB_NAME_AW(func) func##W
- # else
- # define WINELIB_NAME_AW(func) func##A
- # endif /* UNICODE */
- #endif /* __WINESRC__ */
- #ifdef __WINESRC__
- # define DECL_WINELIB_TYPE_AW(type) /* nothing */
- #else /* __WINESRC__ */
- # define DECL_WINELIB_TYPE_AW(type) typedef WINELIB_NAME_AW(type) type;
- #endif /* __WINESRC__ */
- #include <winnt.h>
- /* Polymorphic types */
- typedef UINT_PTR WPARAM;
- typedef LONG_PTR LPARAM;
- typedef LONG_PTR LRESULT;
- /* Integer types */
- typedef WORD ATOM;
- typedef DWORD COLORREF, *LPCOLORREF;
- /* Handle types */
- typedef int HFILE;
- DECLARE_HANDLE(HACCEL);
- DECLARE_HANDLE(HBITMAP);
- DECLARE_HANDLE(HBRUSH);
- DECLARE_HANDLE(HCOLORSPACE);
- DECLARE_HANDLE(HDC);
- DECLARE_HANDLE(HDESK);
- 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_HANDLE(HWND);
- /* Handle types that must remain interchangeable even with strict on */
- typedef HINSTANCE HMODULE;
- typedef HANDLE HGDIOBJ;
- typedef HANDLE HGLOBAL;
- typedef HANDLE HLOCAL;
- typedef HANDLE GLOBALHANDLE;
- typedef HANDLE LOCALHANDLE;
- typedef HICON HCURSOR;
- /* Callback function pointers types */
- typedef INT (CALLBACK *FARPROC)();
- typedef INT (CALLBACK *PROC)();
- /* 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 MAKEWORD(low,high) ((WORD)(((BYTE)(low)) | ((WORD)((BYTE)(high))) << 8))
- #define MAKELONG(low,high) ((LONG)(((WORD)(low)) | (((DWORD)((WORD)(high))) << 16)))
- /* min and max macros */
- #ifndef NOMINMAX
- #ifndef max
- #define max(a,b) (((a) > (b)) ? (a) : (b))
- #endif
- #ifndef min
- #define min(a,b) (((a) < (b)) ? (a) : (b))
- #endif
- #endif /* NOMINMAX */
- #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 */
- typedef struct tagSIZE
- {
- LONG cx;
- LONG cy;
- } SIZE, *PSIZE, *LPSIZE;
- typedef SIZE SIZEL, *PSIZEL, *LPSIZEL;
- /* The POINT structure */
- typedef struct tagPOINT
- {
- LONG x;
- LONG y;
- } POINT, *PPOINT, *LPPOINT;
- typedef struct _POINTL
- {
- LONG x;
- LONG y;
- } POINTL, *PPOINTL;
- /* The POINTS structure */
- typedef struct tagPOINTS
- {
- SHORT x;
- SHORT y;
- } POINTS, *PPOINTS, *LPPOINTS;
- /* The RECT structure */
- typedef struct tagRECT
- {
- LONG left;
- LONG top;
- LONG right;
- LONG bottom;
- } RECT, *PRECT, *LPRECT;
- typedef const RECT *LPCRECT;
- typedef struct _RECTL
- {
- LONG left;
- LONG top;
- LONG right;
- LONG bottom;
- } RECTL, *PRECTL, *LPRECTL;
- typedef const RECTL *LPCRECTL;
- #ifdef __cplusplus
- }
- #endif
- #endif /* _WINDEF_ */
|