af062818b47340eef15700d2f0211576ba3506eevboxsync/*
af062818b47340eef15700d2f0211576ba3506eevboxsync * Basic types definitions
af062818b47340eef15700d2f0211576ba3506eevboxsync *
af062818b47340eef15700d2f0211576ba3506eevboxsync * Copyright 1996 Alexandre Julliard
af062818b47340eef15700d2f0211576ba3506eevboxsync *
af062818b47340eef15700d2f0211576ba3506eevboxsync * This library is free software; you can redistribute it and/or
af062818b47340eef15700d2f0211576ba3506eevboxsync * modify it under the terms of the GNU Lesser General Public
af062818b47340eef15700d2f0211576ba3506eevboxsync * License as published by the Free Software Foundation; either
af062818b47340eef15700d2f0211576ba3506eevboxsync * version 2.1 of the License, or (at your option) any later version.
af062818b47340eef15700d2f0211576ba3506eevboxsync *
af062818b47340eef15700d2f0211576ba3506eevboxsync * This library is distributed in the hope that it will be useful,
af062818b47340eef15700d2f0211576ba3506eevboxsync * but WITHOUT ANY WARRANTY; without even the implied warranty of
af062818b47340eef15700d2f0211576ba3506eevboxsync * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
af062818b47340eef15700d2f0211576ba3506eevboxsync * Lesser General Public License for more details.
af062818b47340eef15700d2f0211576ba3506eevboxsync *
af062818b47340eef15700d2f0211576ba3506eevboxsync * You should have received a copy of the GNU Lesser General Public
af062818b47340eef15700d2f0211576ba3506eevboxsync * License along with this library; if not, write to the Free Software
af062818b47340eef15700d2f0211576ba3506eevboxsync * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
af062818b47340eef15700d2f0211576ba3506eevboxsync */
af062818b47340eef15700d2f0211576ba3506eevboxsync
b955672b950093ff7416d1269dd4d3b69983bd8fvboxsync/*
4b9d6701570cb98fd36e209314239d104ec584d3vboxsync * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
4b9d6701570cb98fd36e209314239d104ec584d3vboxsync * other than GPL or LGPL is available it will apply instead, Oracle elects to use only
b955672b950093ff7416d1269dd4d3b69983bd8fvboxsync * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
b955672b950093ff7416d1269dd4d3b69983bd8fvboxsync * a choice of LGPL license versions is made available with the language indicating
b955672b950093ff7416d1269dd4d3b69983bd8fvboxsync * that LGPLv2 or any later version may be used, or where a choice of which version
b955672b950093ff7416d1269dd4d3b69983bd8fvboxsync * of the LGPL is applied is otherwise unspecified.
b955672b950093ff7416d1269dd4d3b69983bd8fvboxsync */
b955672b950093ff7416d1269dd4d3b69983bd8fvboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#ifndef _WINDEF_
af062818b47340eef15700d2f0211576ba3506eevboxsync#define _WINDEF_
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#ifndef WINVER
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WINVER 0x0500
af062818b47340eef15700d2f0211576ba3506eevboxsync#endif
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#ifndef NO_STRICT
af062818b47340eef15700d2f0211576ba3506eevboxsync# ifndef STRICT
af062818b47340eef15700d2f0211576ba3506eevboxsync# define STRICT
af062818b47340eef15700d2f0211576ba3506eevboxsync# endif /* STRICT */
af062818b47340eef15700d2f0211576ba3506eevboxsync#endif /* NO_STRICT */
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#ifdef __cplusplus
af062818b47340eef15700d2f0211576ba3506eevboxsyncextern "C" {
af062818b47340eef15700d2f0211576ba3506eevboxsync#endif
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync/* Calling conventions definitions */
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#if defined(__x86_64__) && !defined(_WIN64)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define _WIN64
af062818b47340eef15700d2f0211576ba3506eevboxsync#endif
af062818b47340eef15700d2f0211576ba3506eevboxsync
589fd26cedb2b4ebbed14f2964cad03cc8ebbca2vboxsync#ifndef _WIN64
589fd26cedb2b4ebbed14f2964cad03cc8ebbca2vboxsync# if defined(__i386__) && !defined(_X86_)
589fd26cedb2b4ebbed14f2964cad03cc8ebbca2vboxsync# define _X86_
589fd26cedb2b4ebbed14f2964cad03cc8ebbca2vboxsync# endif
589fd26cedb2b4ebbed14f2964cad03cc8ebbca2vboxsync# if defined(_X86_) && !defined(__i386__)
589fd26cedb2b4ebbed14f2964cad03cc8ebbca2vboxsync# define __i386__
589fd26cedb2b4ebbed14f2964cad03cc8ebbca2vboxsync# endif
589fd26cedb2b4ebbed14f2964cad03cc8ebbca2vboxsync#endif
589fd26cedb2b4ebbed14f2964cad03cc8ebbca2vboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#ifndef __stdcall
af062818b47340eef15700d2f0211576ba3506eevboxsync# ifdef __i386__
af062818b47340eef15700d2f0211576ba3506eevboxsync# ifdef __GNUC__
af062818b47340eef15700d2f0211576ba3506eevboxsync# ifdef __APPLE__ /* Mac OS X uses a 16-byte aligned stack and not a 4-byte one */
af062818b47340eef15700d2f0211576ba3506eevboxsync# define __stdcall __attribute__((__stdcall__)) __attribute__((__force_align_arg_pointer__))
af062818b47340eef15700d2f0211576ba3506eevboxsync# else
af062818b47340eef15700d2f0211576ba3506eevboxsync# define __stdcall __attribute__((__stdcall__))
af062818b47340eef15700d2f0211576ba3506eevboxsync# endif
af062818b47340eef15700d2f0211576ba3506eevboxsync# elif defined(_MSC_VER)
af062818b47340eef15700d2f0211576ba3506eevboxsync /* Nothing needs to be done. __stdcall already exists */
af062818b47340eef15700d2f0211576ba3506eevboxsync# else
af062818b47340eef15700d2f0211576ba3506eevboxsync# error You need to define __stdcall for your compiler
af062818b47340eef15700d2f0211576ba3506eevboxsync# endif
af062818b47340eef15700d2f0211576ba3506eevboxsync# elif defined(__x86_64__) && defined (__GNUC__)
af062818b47340eef15700d2f0211576ba3506eevboxsync# define __stdcall __attribute__((ms_abi))
af062818b47340eef15700d2f0211576ba3506eevboxsync# else /* __i386__ */
af062818b47340eef15700d2f0211576ba3506eevboxsync# define __stdcall
af062818b47340eef15700d2f0211576ba3506eevboxsync# endif /* __i386__ */
af062818b47340eef15700d2f0211576ba3506eevboxsync#endif /* __stdcall */
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#ifndef __cdecl
af062818b47340eef15700d2f0211576ba3506eevboxsync# if defined(__i386__) && defined(__GNUC__)
af062818b47340eef15700d2f0211576ba3506eevboxsync# ifdef __APPLE__ /* Mac OS X uses 16-byte aligned stack and not a 4-byte one */
af062818b47340eef15700d2f0211576ba3506eevboxsync# define __cdecl __attribute__((__cdecl__)) __attribute__((__force_align_arg_pointer__))
af062818b47340eef15700d2f0211576ba3506eevboxsync# else
af062818b47340eef15700d2f0211576ba3506eevboxsync# define __cdecl __attribute__((__cdecl__))
af062818b47340eef15700d2f0211576ba3506eevboxsync# endif
af062818b47340eef15700d2f0211576ba3506eevboxsync# elif defined(__x86_64__) && defined (__GNUC__)
af062818b47340eef15700d2f0211576ba3506eevboxsync# define __cdecl __attribute__((ms_abi))
af062818b47340eef15700d2f0211576ba3506eevboxsync# elif !defined(_MSC_VER)
af062818b47340eef15700d2f0211576ba3506eevboxsync# define __cdecl
af062818b47340eef15700d2f0211576ba3506eevboxsync# endif
af062818b47340eef15700d2f0211576ba3506eevboxsync#endif /* __cdecl */
af062818b47340eef15700d2f0211576ba3506eevboxsync
589fd26cedb2b4ebbed14f2964cad03cc8ebbca2vboxsync#ifndef __ms_va_list
589fd26cedb2b4ebbed14f2964cad03cc8ebbca2vboxsync# if defined(__x86_64__) && defined (__GNUC__)
589fd26cedb2b4ebbed14f2964cad03cc8ebbca2vboxsync# define __ms_va_list __builtin_ms_va_list
589fd26cedb2b4ebbed14f2964cad03cc8ebbca2vboxsync# define __ms_va_start(list,arg) __builtin_ms_va_start(list,arg)
589fd26cedb2b4ebbed14f2964cad03cc8ebbca2vboxsync# define __ms_va_end(list) __builtin_ms_va_end(list)
589fd26cedb2b4ebbed14f2964cad03cc8ebbca2vboxsync# else
589fd26cedb2b4ebbed14f2964cad03cc8ebbca2vboxsync# define __ms_va_list va_list
589fd26cedb2b4ebbed14f2964cad03cc8ebbca2vboxsync# define __ms_va_start(list,arg) va_start(list,arg)
589fd26cedb2b4ebbed14f2964cad03cc8ebbca2vboxsync# define __ms_va_end(list) va_end(list)
589fd26cedb2b4ebbed14f2964cad03cc8ebbca2vboxsync# endif
589fd26cedb2b4ebbed14f2964cad03cc8ebbca2vboxsync#endif
589fd26cedb2b4ebbed14f2964cad03cc8ebbca2vboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#ifdef __WINESRC__
af062818b47340eef15700d2f0211576ba3506eevboxsync#define __ONLY_IN_WINELIB(x) do_not_use_this_in_wine
af062818b47340eef15700d2f0211576ba3506eevboxsync#else
af062818b47340eef15700d2f0211576ba3506eevboxsync#define __ONLY_IN_WINELIB(x) x
af062818b47340eef15700d2f0211576ba3506eevboxsync#endif
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#ifndef pascal
af062818b47340eef15700d2f0211576ba3506eevboxsync#define pascal __ONLY_IN_WINELIB(__stdcall)
af062818b47340eef15700d2f0211576ba3506eevboxsync#endif
af062818b47340eef15700d2f0211576ba3506eevboxsync#ifndef _pascal
af062818b47340eef15700d2f0211576ba3506eevboxsync#define _pascal __ONLY_IN_WINELIB(__stdcall)
af062818b47340eef15700d2f0211576ba3506eevboxsync#endif
af062818b47340eef15700d2f0211576ba3506eevboxsync#ifndef _stdcall
af062818b47340eef15700d2f0211576ba3506eevboxsync#define _stdcall __ONLY_IN_WINELIB(__stdcall)
af062818b47340eef15700d2f0211576ba3506eevboxsync#endif
af062818b47340eef15700d2f0211576ba3506eevboxsync#ifndef _fastcall
af062818b47340eef15700d2f0211576ba3506eevboxsync#define _fastcall __ONLY_IN_WINELIB(__stdcall)
af062818b47340eef15700d2f0211576ba3506eevboxsync#endif
af062818b47340eef15700d2f0211576ba3506eevboxsync#ifndef __fastcall
af062818b47340eef15700d2f0211576ba3506eevboxsync#define __fastcall __ONLY_IN_WINELIB(__stdcall)
af062818b47340eef15700d2f0211576ba3506eevboxsync#endif
af062818b47340eef15700d2f0211576ba3506eevboxsync#ifndef __export
af062818b47340eef15700d2f0211576ba3506eevboxsync#define __export __ONLY_IN_WINELIB(__stdcall)
af062818b47340eef15700d2f0211576ba3506eevboxsync#endif
af062818b47340eef15700d2f0211576ba3506eevboxsync#ifndef cdecl
af062818b47340eef15700d2f0211576ba3506eevboxsync#define cdecl __ONLY_IN_WINELIB(__cdecl)
af062818b47340eef15700d2f0211576ba3506eevboxsync#endif
af062818b47340eef15700d2f0211576ba3506eevboxsync#ifndef _cdecl
af062818b47340eef15700d2f0211576ba3506eevboxsync#define _cdecl __ONLY_IN_WINELIB(__cdecl)
af062818b47340eef15700d2f0211576ba3506eevboxsync#endif
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#ifndef near
af062818b47340eef15700d2f0211576ba3506eevboxsync#define near __ONLY_IN_WINELIB(/* nothing */)
af062818b47340eef15700d2f0211576ba3506eevboxsync#endif
af062818b47340eef15700d2f0211576ba3506eevboxsync#ifndef far
af062818b47340eef15700d2f0211576ba3506eevboxsync#define far __ONLY_IN_WINELIB(/* nothing */)
af062818b47340eef15700d2f0211576ba3506eevboxsync#endif
af062818b47340eef15700d2f0211576ba3506eevboxsync#ifndef _near
af062818b47340eef15700d2f0211576ba3506eevboxsync#define _near __ONLY_IN_WINELIB(/* nothing */)
af062818b47340eef15700d2f0211576ba3506eevboxsync#endif
af062818b47340eef15700d2f0211576ba3506eevboxsync#ifndef _far
af062818b47340eef15700d2f0211576ba3506eevboxsync#define _far __ONLY_IN_WINELIB(/* nothing */)
af062818b47340eef15700d2f0211576ba3506eevboxsync#endif
af062818b47340eef15700d2f0211576ba3506eevboxsync#ifndef NEAR
af062818b47340eef15700d2f0211576ba3506eevboxsync#define NEAR __ONLY_IN_WINELIB(/* nothing */)
af062818b47340eef15700d2f0211576ba3506eevboxsync#endif
af062818b47340eef15700d2f0211576ba3506eevboxsync#ifndef FAR
af062818b47340eef15700d2f0211576ba3506eevboxsync#define FAR __ONLY_IN_WINELIB(/* nothing */)
af062818b47340eef15700d2f0211576ba3506eevboxsync#endif
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#ifndef _MSC_VER
af062818b47340eef15700d2f0211576ba3506eevboxsync# ifndef _declspec
af062818b47340eef15700d2f0211576ba3506eevboxsync# define _declspec(x) __ONLY_IN_WINELIB(/* nothing */)
af062818b47340eef15700d2f0211576ba3506eevboxsync# endif
af062818b47340eef15700d2f0211576ba3506eevboxsync# ifndef __declspec
af062818b47340eef15700d2f0211576ba3506eevboxsync# define __declspec(x) __ONLY_IN_WINELIB(/* nothing */)
af062818b47340eef15700d2f0211576ba3506eevboxsync# endif
af062818b47340eef15700d2f0211576ba3506eevboxsync#endif
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#ifdef _MSC_VER
af062818b47340eef15700d2f0211576ba3506eevboxsync# define inline __inline
af062818b47340eef15700d2f0211576ba3506eevboxsync#endif
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define CALLBACK __stdcall
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WINAPI __stdcall
af062818b47340eef15700d2f0211576ba3506eevboxsync#define APIPRIVATE __stdcall
af062818b47340eef15700d2f0211576ba3506eevboxsync#define PASCAL __stdcall
af062818b47340eef15700d2f0211576ba3506eevboxsync#define CDECL __cdecl
af062818b47340eef15700d2f0211576ba3506eevboxsync#define _CDECL __cdecl
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WINAPIV __cdecl
af062818b47340eef15700d2f0211576ba3506eevboxsync#define APIENTRY WINAPI
af062818b47340eef15700d2f0211576ba3506eevboxsync#define CONST const
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync/* Misc. constants. */
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#undef NULL
af062818b47340eef15700d2f0211576ba3506eevboxsync#ifdef __cplusplus
af062818b47340eef15700d2f0211576ba3506eevboxsync#define NULL 0
af062818b47340eef15700d2f0211576ba3506eevboxsync#else
af062818b47340eef15700d2f0211576ba3506eevboxsync#define NULL ((void*)0)
af062818b47340eef15700d2f0211576ba3506eevboxsync#endif
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#ifdef FALSE
af062818b47340eef15700d2f0211576ba3506eevboxsync#undef FALSE
af062818b47340eef15700d2f0211576ba3506eevboxsync#endif
af062818b47340eef15700d2f0211576ba3506eevboxsync#define FALSE 0
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#ifdef TRUE
af062818b47340eef15700d2f0211576ba3506eevboxsync#undef TRUE
af062818b47340eef15700d2f0211576ba3506eevboxsync#endif
af062818b47340eef15700d2f0211576ba3506eevboxsync#define TRUE 1
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#ifndef IN
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IN
af062818b47340eef15700d2f0211576ba3506eevboxsync#endif
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#ifndef OUT
af062818b47340eef15700d2f0211576ba3506eevboxsync#define OUT
af062818b47340eef15700d2f0211576ba3506eevboxsync#endif
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#ifndef OPTIONAL
af062818b47340eef15700d2f0211576ba3506eevboxsync#define OPTIONAL
af062818b47340eef15700d2f0211576ba3506eevboxsync#endif
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync/* Standard data types */
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef void *LPVOID;
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef const void *LPCVOID;
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef int BOOL, *PBOOL, *LPBOOL;
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef unsigned char BYTE, *PBYTE, *LPBYTE;
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef unsigned char UCHAR, *PUCHAR;
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef unsigned short WORD, *PWORD, *LPWORD;
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef unsigned short USHORT, *PUSHORT;
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef int INT, *PINT, *LPINT;
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef unsigned int UINT, *PUINT;
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef float FLOAT, *PFLOAT;
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef char *PSZ;
af062818b47340eef15700d2f0211576ba3506eevboxsync#ifdef _MSC_VER
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef long *LPLONG;
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef unsigned long DWORD, *PDWORD, *LPDWORD;
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef unsigned long ULONG, *PULONG;
af062818b47340eef15700d2f0211576ba3506eevboxsync#else
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef int *LPLONG;
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef unsigned int DWORD, *PDWORD, *LPDWORD;
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef unsigned int ULONG, *PULONG;
af062818b47340eef15700d2f0211576ba3506eevboxsync#endif
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync/* Macros to map Winelib names to the correct implementation name */
af062818b47340eef15700d2f0211576ba3506eevboxsync/* Note that Winelib is purely Win32. */
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#ifdef __WINESRC__
5112e32d7072e280613921c982a6672f2c859cf3vboxsync#define WINE_NO_UNICODE_MACROS 1
5112e32d7072e280613921c982a6672f2c859cf3vboxsync#define WINE_STRICT_PROTOTYPES 1
af062818b47340eef15700d2f0211576ba3506eevboxsync#endif
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#ifdef WINE_NO_UNICODE_MACROS
af062818b47340eef15700d2f0211576ba3506eevboxsync# define WINELIB_NAME_AW(func) \
af062818b47340eef15700d2f0211576ba3506eevboxsync func##_must_be_suffixed_with_W_or_A_in_this_context \
af062818b47340eef15700d2f0211576ba3506eevboxsync func##_must_be_suffixed_with_W_or_A_in_this_context
af062818b47340eef15700d2f0211576ba3506eevboxsync#else /* WINE_NO_UNICODE_MACROS */
af062818b47340eef15700d2f0211576ba3506eevboxsync# ifdef UNICODE
af062818b47340eef15700d2f0211576ba3506eevboxsync# define WINELIB_NAME_AW(func) func##W
af062818b47340eef15700d2f0211576ba3506eevboxsync# else
af062818b47340eef15700d2f0211576ba3506eevboxsync# define WINELIB_NAME_AW(func) func##A
af062818b47340eef15700d2f0211576ba3506eevboxsync# endif
af062818b47340eef15700d2f0211576ba3506eevboxsync#endif /* WINE_NO_UNICODE_MACROS */
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#ifdef WINE_NO_UNICODE_MACROS
af062818b47340eef15700d2f0211576ba3506eevboxsync# define DECL_WINELIB_TYPE_AW(type) /* nothing */
af062818b47340eef15700d2f0211576ba3506eevboxsync#else
af062818b47340eef15700d2f0211576ba3506eevboxsync# define DECL_WINELIB_TYPE_AW(type) typedef WINELIB_NAME_AW(type) type;
af062818b47340eef15700d2f0211576ba3506eevboxsync#endif
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#include <winnt.h>
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync/* Polymorphic types */
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef UINT_PTR WPARAM;
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef LONG_PTR LPARAM;
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef LONG_PTR LRESULT;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync/* Integer types */
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef WORD ATOM;
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef DWORD COLORREF, *LPCOLORREF;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync/* Handle types */
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef int HFILE;
af062818b47340eef15700d2f0211576ba3506eevboxsyncDECLARE_HANDLE(HACCEL);
af062818b47340eef15700d2f0211576ba3506eevboxsyncDECLARE_HANDLE(HBITMAP);
af062818b47340eef15700d2f0211576ba3506eevboxsyncDECLARE_HANDLE(HBRUSH);
af062818b47340eef15700d2f0211576ba3506eevboxsyncDECLARE_HANDLE(HCOLORSPACE);
af062818b47340eef15700d2f0211576ba3506eevboxsyncDECLARE_HANDLE(HDC);
af062818b47340eef15700d2f0211576ba3506eevboxsyncDECLARE_HANDLE(HDESK);
af062818b47340eef15700d2f0211576ba3506eevboxsyncDECLARE_HANDLE(HENHMETAFILE);
af062818b47340eef15700d2f0211576ba3506eevboxsyncDECLARE_HANDLE(HFONT);
af062818b47340eef15700d2f0211576ba3506eevboxsyncDECLARE_HANDLE(HGLRC);
af062818b47340eef15700d2f0211576ba3506eevboxsyncDECLARE_HANDLE(HHOOK);
af062818b47340eef15700d2f0211576ba3506eevboxsyncDECLARE_HANDLE(HICON);
af062818b47340eef15700d2f0211576ba3506eevboxsyncDECLARE_HANDLE(HINSTANCE);
af062818b47340eef15700d2f0211576ba3506eevboxsyncDECLARE_HANDLE(HKEY);
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef HKEY *PHKEY;
af062818b47340eef15700d2f0211576ba3506eevboxsyncDECLARE_HANDLE(HKL);
af062818b47340eef15700d2f0211576ba3506eevboxsyncDECLARE_HANDLE(HMENU);
af062818b47340eef15700d2f0211576ba3506eevboxsyncDECLARE_HANDLE(HMETAFILE);
af062818b47340eef15700d2f0211576ba3506eevboxsyncDECLARE_HANDLE(HMONITOR);
af062818b47340eef15700d2f0211576ba3506eevboxsyncDECLARE_HANDLE(HPALETTE);
af062818b47340eef15700d2f0211576ba3506eevboxsyncDECLARE_HANDLE(HPEN);
af062818b47340eef15700d2f0211576ba3506eevboxsyncDECLARE_HANDLE(HRGN);
af062818b47340eef15700d2f0211576ba3506eevboxsyncDECLARE_HANDLE(HRSRC);
af062818b47340eef15700d2f0211576ba3506eevboxsyncDECLARE_HANDLE(HTASK);
af062818b47340eef15700d2f0211576ba3506eevboxsyncDECLARE_HANDLE(HWINEVENTHOOK);
af062818b47340eef15700d2f0211576ba3506eevboxsyncDECLARE_HANDLE(HWINSTA);
af062818b47340eef15700d2f0211576ba3506eevboxsyncDECLARE_HANDLE(HWND);
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync/* Handle types that must remain interchangeable even with strict on */
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef HINSTANCE HMODULE;
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef HANDLE HGDIOBJ;
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef HANDLE HGLOBAL;
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef HANDLE HLOCAL;
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef HANDLE GLOBALHANDLE;
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef HANDLE LOCALHANDLE;
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef HICON HCURSOR;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync/* Callback function pointers types */
af062818b47340eef15700d2f0211576ba3506eevboxsync
5112e32d7072e280613921c982a6672f2c859cf3vboxsync#ifdef WINE_STRICT_PROTOTYPES
5112e32d7072e280613921c982a6672f2c859cf3vboxsynctypedef INT_PTR (CALLBACK *FARPROC)(void);
5112e32d7072e280613921c982a6672f2c859cf3vboxsynctypedef INT_PTR (CALLBACK *NEARPROC)(void);
5112e32d7072e280613921c982a6672f2c859cf3vboxsynctypedef INT_PTR (CALLBACK *PROC)(void);
5112e32d7072e280613921c982a6672f2c859cf3vboxsync#else
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef INT_PTR (CALLBACK *FARPROC)();
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef INT_PTR (CALLBACK *NEARPROC)();
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef INT_PTR (CALLBACK *PROC)();
5112e32d7072e280613921c982a6672f2c859cf3vboxsync#endif
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync/* Macros to split words and longs. */
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define LOBYTE(w) ((BYTE)((DWORD_PTR)(w) & 0xFF))
af062818b47340eef15700d2f0211576ba3506eevboxsync#define HIBYTE(w) ((BYTE)((DWORD_PTR)(w) >> 8))
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define LOWORD(l) ((WORD)((DWORD_PTR)(l) & 0xFFFF))
af062818b47340eef15700d2f0211576ba3506eevboxsync#define HIWORD(l) ((WORD)((DWORD_PTR)(l) >> 16))
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MAKEWORD(low,high) ((WORD)(((BYTE)((DWORD_PTR)(low) & 0xFF)) | ((WORD)((BYTE)((DWORD_PTR)(high) & 0xFF))) << 8))
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MAKELONG(low,high) ((LONG)(((WORD)((DWORD_PTR)(low) & 0xFFFF)) | ((DWORD)((WORD)((DWORD_PTR)(high) & 0xFFFF))) << 16))
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync/* min and max macros */
af062818b47340eef15700d2f0211576ba3506eevboxsync#ifndef NOMINMAX
af062818b47340eef15700d2f0211576ba3506eevboxsync#ifndef max
af062818b47340eef15700d2f0211576ba3506eevboxsync#define max(a,b) (((a) > (b)) ? (a) : (b))
af062818b47340eef15700d2f0211576ba3506eevboxsync#endif
af062818b47340eef15700d2f0211576ba3506eevboxsync#ifndef min
af062818b47340eef15700d2f0211576ba3506eevboxsync#define min(a,b) (((a) < (b)) ? (a) : (b))
af062818b47340eef15700d2f0211576ba3506eevboxsync#endif
af062818b47340eef15700d2f0211576ba3506eevboxsync#endif /* NOMINMAX */
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#ifdef MAX_PATH /* Work-around for Mingw */
af062818b47340eef15700d2f0211576ba3506eevboxsync#undef MAX_PATH
af062818b47340eef15700d2f0211576ba3506eevboxsync#endif /* MAX_PATH */
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MAX_PATH 260
af062818b47340eef15700d2f0211576ba3506eevboxsync#define HFILE_ERROR ((HFILE)-1)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync/* The SIZE structure */
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct tagSIZE
af062818b47340eef15700d2f0211576ba3506eevboxsync{
af062818b47340eef15700d2f0211576ba3506eevboxsync LONG cx;
af062818b47340eef15700d2f0211576ba3506eevboxsync LONG cy;
af062818b47340eef15700d2f0211576ba3506eevboxsync} SIZE, *PSIZE, *LPSIZE;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef SIZE SIZEL, *PSIZEL, *LPSIZEL;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync/* The POINT structure */
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct tagPOINT
af062818b47340eef15700d2f0211576ba3506eevboxsync{
af062818b47340eef15700d2f0211576ba3506eevboxsync LONG x;
af062818b47340eef15700d2f0211576ba3506eevboxsync LONG y;
af062818b47340eef15700d2f0211576ba3506eevboxsync} POINT, *PPOINT, *LPPOINT;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct _POINTL
af062818b47340eef15700d2f0211576ba3506eevboxsync{
af062818b47340eef15700d2f0211576ba3506eevboxsync LONG x;
af062818b47340eef15700d2f0211576ba3506eevboxsync LONG y;
af062818b47340eef15700d2f0211576ba3506eevboxsync} POINTL, *PPOINTL;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync/* The POINTS structure */
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct tagPOINTS
af062818b47340eef15700d2f0211576ba3506eevboxsync{
af062818b47340eef15700d2f0211576ba3506eevboxsync#ifdef WORDS_BIGENDIAN
af062818b47340eef15700d2f0211576ba3506eevboxsync SHORT y;
af062818b47340eef15700d2f0211576ba3506eevboxsync SHORT x;
af062818b47340eef15700d2f0211576ba3506eevboxsync#else
af062818b47340eef15700d2f0211576ba3506eevboxsync SHORT x;
af062818b47340eef15700d2f0211576ba3506eevboxsync SHORT y;
af062818b47340eef15700d2f0211576ba3506eevboxsync#endif
af062818b47340eef15700d2f0211576ba3506eevboxsync} POINTS, *PPOINTS, *LPPOINTS;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct _FILETIME {
af062818b47340eef15700d2f0211576ba3506eevboxsync#ifdef WORDS_BIGENDIAN
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwHighDateTime;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwLowDateTime;
af062818b47340eef15700d2f0211576ba3506eevboxsync#else
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwLowDateTime;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwHighDateTime;
af062818b47340eef15700d2f0211576ba3506eevboxsync#endif
af062818b47340eef15700d2f0211576ba3506eevboxsync} FILETIME, *PFILETIME, *LPFILETIME;
af062818b47340eef15700d2f0211576ba3506eevboxsync#define _FILETIME_
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync/* The RECT structure */
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct tagRECT
af062818b47340eef15700d2f0211576ba3506eevboxsync{
af062818b47340eef15700d2f0211576ba3506eevboxsync LONG left;
af062818b47340eef15700d2f0211576ba3506eevboxsync LONG top;
af062818b47340eef15700d2f0211576ba3506eevboxsync LONG right;
af062818b47340eef15700d2f0211576ba3506eevboxsync LONG bottom;
af062818b47340eef15700d2f0211576ba3506eevboxsync} RECT, *PRECT, *LPRECT;
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef const RECT *LPCRECT;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct _RECTL
af062818b47340eef15700d2f0211576ba3506eevboxsync{
af062818b47340eef15700d2f0211576ba3506eevboxsync LONG left;
af062818b47340eef15700d2f0211576ba3506eevboxsync LONG top;
af062818b47340eef15700d2f0211576ba3506eevboxsync LONG right;
af062818b47340eef15700d2f0211576ba3506eevboxsync LONG bottom;
af062818b47340eef15700d2f0211576ba3506eevboxsync} RECTL, *PRECTL, *LPRECTL;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef const RECTL *LPCRECTL;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#ifdef __cplusplus
af062818b47340eef15700d2f0211576ba3506eevboxsync}
af062818b47340eef15700d2f0211576ba3506eevboxsync#endif
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#endif /* _WINDEF_ */