234 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			234 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
|   | //  basic_types.hpp  --------------------------------------------------------------// | ||
|  | 
 | ||
|  | //  Copyright 2010 Vicente J. Botet Escriba | ||
|  | //  Copyright 2015 Andrey Semashev | ||
|  | 
 | ||
|  | //  Distributed under the Boost Software License, Version 1.0. | ||
|  | //  See http://www.boost.org/LICENSE_1_0.txt | ||
|  | 
 | ||
|  | #ifndef BOOST_DETAIL_WINAPI_BASIC_TYPES_HPP | ||
|  | #define BOOST_DETAIL_WINAPI_BASIC_TYPES_HPP | ||
|  | 
 | ||
|  | #include <cstdarg> | ||
|  | #include <boost/cstdint.hpp> | ||
|  | #include <boost/detail/winapi/config.hpp> | ||
|  | 
 | ||
|  | #ifdef BOOST_HAS_PRAGMA_ONCE | ||
|  | #pragma once | ||
|  | #endif | ||
|  | 
 | ||
|  | #if defined( BOOST_USE_WINDOWS_H ) | ||
|  | # include <windows.h> | ||
|  | #elif defined( WIN32 ) || defined( _WIN32 ) || defined( __WIN32__ ) ||  defined(__CYGWIN__) | ||
|  | # include <winerror.h> | ||
|  | # ifdef UNDER_CE | ||
|  | #  ifndef WINAPI | ||
|  | #   ifndef _WIN32_WCE_EMULATION | ||
|  | #    define WINAPI  __cdecl     // Note this doesn't match the desktop definition | ||
|  | #   else | ||
|  | #    define WINAPI  __stdcall | ||
|  | #   endif | ||
|  | #  endif | ||
|  | // Windows CE defines a few functions as inline functions in kfuncs.h | ||
|  | typedef int BOOL; | ||
|  | typedef unsigned long DWORD; | ||
|  | typedef void* HANDLE; | ||
|  | #  include <kfuncs.h> | ||
|  | # else | ||
|  | #  ifndef WINAPI | ||
|  | #   define WINAPI  __stdcall | ||
|  | #  endif | ||
|  | # endif | ||
|  | # ifndef NTAPI | ||
|  | #  define NTAPI __stdcall | ||
|  | # endif | ||
|  | #else | ||
|  | # error "Win32 functions not available" | ||
|  | #endif | ||
|  | 
 | ||
|  | #ifndef NO_STRICT | ||
|  | #ifndef STRICT | ||
|  | #define STRICT 1 | ||
|  | #endif | ||
|  | #endif | ||
|  | 
 | ||
|  | #if defined(STRICT) | ||
|  | #define BOOST_DETAIL_WINAPI_DECLARE_HANDLE(x) struct x##__; typedef struct x##__ *x | ||
|  | #else | ||
|  | #define BOOST_DETAIL_WINAPI_DECLARE_HANDLE(x) typedef void* x | ||
|  | #endif | ||
|  | 
 | ||
|  | #if !defined( BOOST_USE_WINDOWS_H ) | ||
|  | extern "C" { | ||
|  | union _LARGE_INTEGER; | ||
|  | struct _SECURITY_ATTRIBUTES; | ||
|  | BOOST_DETAIL_WINAPI_DECLARE_HANDLE(HINSTANCE); | ||
|  | typedef HINSTANCE HMODULE; | ||
|  | } | ||
|  | #endif | ||
|  | 
 | ||
|  | #if defined(__GNUC__) | ||
|  | #define BOOST_DETAIL_WINAPI_MAY_ALIAS __attribute__ ((__may_alias__)) | ||
|  | #else | ||
|  | #define BOOST_DETAIL_WINAPI_MAY_ALIAS | ||
|  | #endif | ||
|  | 
 | ||
|  | // MinGW64 gcc 4.8.2 fails to compile function declarations with boost::detail::winapi::VOID_ arguments even though | ||
|  | // the typedef expands to void. In Windows SDK, VOID is a macro which unfolds to void. We use our own macro in such cases. | ||
|  | #define BOOST_DETAIL_WINAPI_VOID void | ||
|  | 
 | ||
|  | namespace boost { | ||
|  | namespace detail { | ||
|  | namespace winapi { | ||
|  | #if defined( BOOST_USE_WINDOWS_H ) | ||
|  | 
 | ||
|  | typedef ::BOOL BOOL_; | ||
|  | typedef ::PBOOL PBOOL_; | ||
|  | typedef ::LPBOOL LPBOOL_; | ||
|  | typedef ::BOOLEAN BOOLEAN_; | ||
|  | typedef ::PBOOLEAN PBOOLEAN_; | ||
|  | typedef ::BYTE BYTE_; | ||
|  | typedef ::PBYTE PBYTE_; | ||
|  | typedef ::LPBYTE LPBYTE_; | ||
|  | typedef ::WORD WORD_; | ||
|  | typedef ::PWORD PWORD_; | ||
|  | typedef ::LPWORD LPWORD_; | ||
|  | typedef ::DWORD DWORD_; | ||
|  | typedef ::PDWORD PDWORD_; | ||
|  | typedef ::LPDWORD LPDWORD_; | ||
|  | typedef ::HANDLE HANDLE_; | ||
|  | typedef ::PHANDLE PHANDLE_; | ||
|  | typedef ::SHORT SHORT_; | ||
|  | typedef ::PSHORT PSHORT_; | ||
|  | typedef ::USHORT USHORT_; | ||
|  | typedef ::PUSHORT PUSHORT_; | ||
|  | typedef ::INT INT_; | ||
|  | typedef ::PINT PINT_; | ||
|  | typedef ::LPINT LPINT_; | ||
|  | typedef ::UINT UINT_; | ||
|  | typedef ::PUINT PUINT_; | ||
|  | typedef ::LONG LONG_; | ||
|  | typedef ::PLONG PLONG_; | ||
|  | typedef ::LPLONG LPLONG_; | ||
|  | typedef ::ULONG ULONG_; | ||
|  | typedef ::PULONG PULONG_; | ||
|  | typedef ::LONGLONG LONGLONG_; | ||
|  | typedef ::ULONGLONG ULONGLONG_; | ||
|  | typedef ::INT_PTR INT_PTR_; | ||
|  | typedef ::UINT_PTR UINT_PTR_; | ||
|  | typedef ::LONG_PTR LONG_PTR_; | ||
|  | typedef ::ULONG_PTR ULONG_PTR_; | ||
|  | typedef ::DWORD_PTR DWORD_PTR_; | ||
|  | typedef ::PDWORD_PTR PDWORD_PTR_; | ||
|  | typedef ::SIZE_T SIZE_T_; | ||
|  | typedef ::PSIZE_T PSIZE_T_; | ||
|  | typedef ::SSIZE_T SSIZE_T_; | ||
|  | typedef ::PSSIZE_T PSSIZE_T_; | ||
|  | typedef VOID VOID_; // VOID is a macro | ||
|  | typedef ::PVOID PVOID_; | ||
|  | typedef ::LPVOID LPVOID_; | ||
|  | typedef ::LPCVOID LPCVOID_; | ||
|  | typedef ::CHAR CHAR_; | ||
|  | typedef ::LPSTR LPSTR_; | ||
|  | typedef ::LPCSTR LPCSTR_; | ||
|  | typedef ::WCHAR WCHAR_; | ||
|  | typedef ::LPWSTR LPWSTR_; | ||
|  | typedef ::LPCWSTR LPCWSTR_; | ||
|  | 
 | ||
|  | #else // defined( BOOST_USE_WINDOWS_H ) | ||
|  | 
 | ||
|  | typedef int BOOL_; | ||
|  | typedef BOOL_* PBOOL_; | ||
|  | typedef BOOL_* LPBOOL_; | ||
|  | typedef unsigned char BYTE_; | ||
|  | typedef BYTE_* PBYTE_; | ||
|  | typedef BYTE_* LPBYTE_; | ||
|  | typedef BYTE_ BOOLEAN_; | ||
|  | typedef BOOLEAN_* PBOOLEAN_; | ||
|  | typedef unsigned short WORD_; | ||
|  | typedef WORD_* PWORD_; | ||
|  | typedef WORD_* LPWORD_; | ||
|  | typedef unsigned long DWORD_; | ||
|  | typedef DWORD_* PDWORD_; | ||
|  | typedef DWORD_* LPDWORD_; | ||
|  | typedef void* HANDLE_; | ||
|  | typedef void** PHANDLE_; | ||
|  | 
 | ||
|  | typedef short SHORT_; | ||
|  | typedef SHORT_* PSHORT_; | ||
|  | typedef unsigned short USHORT_; | ||
|  | typedef USHORT_* PUSHORT_; | ||
|  | typedef int INT_; | ||
|  | typedef INT_* PINT_; | ||
|  | typedef INT_* LPINT_; | ||
|  | typedef unsigned int UINT_; | ||
|  | typedef UINT_* PUINT_; | ||
|  | typedef long LONG_; | ||
|  | typedef LONG_* PLONG_; | ||
|  | typedef LONG_* LPLONG_; | ||
|  | typedef unsigned long ULONG_; | ||
|  | typedef ULONG_* PULONG_; | ||
|  | 
 | ||
|  | typedef boost::int64_t LONGLONG_; | ||
|  | typedef boost::uint64_t ULONGLONG_; | ||
|  | 
 | ||
|  | # ifdef _WIN64 | ||
|  | #  if defined(__CYGWIN__) | ||
|  | typedef long INT_PTR_; | ||
|  | typedef unsigned long UINT_PTR_; | ||
|  | typedef long LONG_PTR_; | ||
|  | typedef unsigned long ULONG_PTR_; | ||
|  | #  else | ||
|  | typedef __int64 INT_PTR_; | ||
|  | typedef unsigned __int64 UINT_PTR_; | ||
|  | typedef __int64 LONG_PTR_; | ||
|  | typedef unsigned __int64 ULONG_PTR_; | ||
|  | #  endif | ||
|  | # else | ||
|  | typedef int INT_PTR_; | ||
|  | typedef unsigned int UINT_PTR_; | ||
|  | typedef long LONG_PTR_; | ||
|  | typedef unsigned long ULONG_PTR_; | ||
|  | # endif | ||
|  | 
 | ||
|  | typedef ULONG_PTR_ DWORD_PTR_, *PDWORD_PTR_; | ||
|  | typedef ULONG_PTR_ SIZE_T_, *PSIZE_T_; | ||
|  | typedef LONG_PTR_ SSIZE_T_, *PSSIZE_T_; | ||
|  | 
 | ||
|  | typedef void VOID_; | ||
|  | typedef void *PVOID_; | ||
|  | typedef void *LPVOID_; | ||
|  | typedef const void *LPCVOID_; | ||
|  | 
 | ||
|  | typedef char CHAR_; | ||
|  | typedef CHAR_ *LPSTR_; | ||
|  | typedef const CHAR_ *LPCSTR_; | ||
|  | 
 | ||
|  | typedef wchar_t WCHAR_; | ||
|  | typedef WCHAR_ *LPWSTR_; | ||
|  | typedef const WCHAR_ *LPCWSTR_; | ||
|  | 
 | ||
|  | #endif // defined( BOOST_USE_WINDOWS_H ) | ||
|  | 
 | ||
|  | typedef ::HMODULE HMODULE_; | ||
|  | 
 | ||
|  | typedef union BOOST_DETAIL_WINAPI_MAY_ALIAS _LARGE_INTEGER { | ||
|  |     struct { | ||
|  |         DWORD_ LowPart; | ||
|  |         LONG_ HighPart; | ||
|  |     } u; | ||
|  |     LONGLONG_ QuadPart; | ||
|  | } LARGE_INTEGER_, *PLARGE_INTEGER_; | ||
|  | 
 | ||
|  | typedef struct BOOST_DETAIL_WINAPI_MAY_ALIAS _SECURITY_ATTRIBUTES { | ||
|  |     DWORD_  nLength; | ||
|  |     LPVOID_ lpSecurityDescriptor; | ||
|  |     BOOL_   bInheritHandle; | ||
|  | } SECURITY_ATTRIBUTES_, *PSECURITY_ATTRIBUTES_, *LPSECURITY_ATTRIBUTES_; | ||
|  | 
 | ||
|  | } | ||
|  | } | ||
|  | } | ||
|  | 
 | ||
|  | #endif // BOOST_DETAIL_WINAPI_BASIC_TYPES_HPP |