1 // basic_types.hpp --------------------------------------------------------------// 2 3 // Copyright 2010 Vicente J. Botet Escriba 4 5 // Distributed under the Boost Software License, Version 1.0. 6 // See http://www.boost.org/LICENSE_1_0.txt 7 8 9 #ifndef BOOST_DETAIL_WINAPI_BASIC_TYPES_HPP 10 #define BOOST_DETAIL_WINAPI_BASIC_TYPES_HPP 11 12 #include <cstdarg> 13 #include <boost/cstdint.hpp> 14 #include <boost/detail/winapi/config.hpp> 15 16 #if defined( BOOST_USE_WINDOWS_H ) 17 # include <windows.h> 18 #elif defined( WIN32 ) || defined( _WIN32 ) || defined( __WIN32__ ) || defined(__CYGWIN__) 19 # include <winerror.h> 20 // @FIXME Which condition must be tested 21 # ifdef UNDER_CE 22 # ifndef WINAPI 23 # ifndef _WIN32_WCE_EMULATION 24 # define WINAPI __cdecl // Note this doesn't match the desktop definition 25 # else 26 # define WINAPI __stdcall 27 # endif 28 # endif 29 # else 30 # ifndef WINAPI 31 # define WINAPI __stdcall 32 # endif 33 # endif 34 # ifndef NTAPI 35 # define NTAPI __stdcall 36 # endif 37 #else 38 # error "Win32 functions not available" 39 #endif 40 41 #ifdef BOOST_HAS_PRAGMA_ONCE 42 #pragma once 43 #endif 44 45 namespace boost { 46 namespace detail { 47 namespace winapi { 48 #if defined( BOOST_USE_WINDOWS_H ) 49 typedef ::BOOL BOOL_; 50 typedef ::BOOLEAN BOOLEAN_; 51 typedef ::PBOOLEAN PBOOLEAN_; 52 typedef ::BYTE BYTE_; 53 typedef ::WORD WORD_; 54 typedef ::DWORD DWORD_; 55 typedef ::HANDLE HANDLE_; 56 typedef ::HMODULE HMODULE_; 57 typedef ::LONG LONG_; 58 typedef ::ULONG ULONG_; 59 typedef ::LONGLONG LONGLONG_; 60 typedef ::ULONGLONG ULONGLONG_; 61 typedef ::INT_PTR INT_PTR_; 62 typedef ::UINT_PTR UINT_PTR_; 63 typedef ::LONG_PTR LONG_PTR_; 64 typedef ::ULONG_PTR ULONG_PTR_; 65 typedef ::LARGE_INTEGER LARGE_INTEGER_; 66 typedef ::PLARGE_INTEGER PLARGE_INTEGER_; 67 typedef ::PVOID PVOID_; 68 typedef ::LPVOID LPVOID_; 69 typedef ::CHAR CHAR_; 70 typedef ::LPSTR LPSTR_; 71 typedef ::LPCSTR LPCSTR_; 72 typedef ::WCHAR WCHAR_; 73 typedef ::LPWSTR LPWSTR_; 74 typedef ::LPCWSTR LPCWSTR_; 75 #else 76 extern "C" { 77 typedef int BOOL_; 78 typedef unsigned char BYTE_; 79 typedef BYTE_ BOOLEAN_; 80 typedef BOOLEAN_* PBOOLEAN_; 81 typedef unsigned short WORD_; 82 typedef unsigned long DWORD_; 83 typedef void* HANDLE_; 84 typedef void* HMODULE_; 85 86 typedef long LONG_; 87 typedef unsigned long ULONG_; 88 89 typedef boost::int64_t LONGLONG_; 90 typedef boost::uint64_t ULONGLONG_; 91 92 // @FIXME Which condition must be tested 93 # ifdef _WIN64 94 #if defined(__CYGWIN__) 95 typedef long INT_PTR_; 96 typedef unsigned long UINT_PTR_; 97 typedef long LONG_PTR_; 98 typedef unsigned long ULONG_PTR_; 99 #else 100 typedef __int64 INT_PTR_; 101 typedef unsigned __int64 UINT_PTR_; 102 typedef __int64 LONG_PTR_; 103 typedef unsigned __int64 ULONG_PTR_; 104 #endif 105 # else 106 typedef int INT_PTR_; 107 typedef unsigned int UINT_PTR_; 108 typedef long LONG_PTR_; 109 typedef unsigned long ULONG_PTR_; 110 # endif 111 112 typedef struct _LARGE_INTEGER { 113 LONGLONG_ QuadPart; 114 } LARGE_INTEGER_; 115 typedef LARGE_INTEGER_ *PLARGE_INTEGER_; 116 117 typedef void *PVOID_; 118 typedef void *LPVOID_; 119 typedef const void *LPCVOID_; 120 121 typedef char CHAR_; 122 typedef CHAR_ *LPSTR_; 123 typedef const CHAR_ *LPCSTR_; 124 125 typedef wchar_t WCHAR_; 126 typedef WCHAR_ *LPWSTR_; 127 typedef const WCHAR_ *LPCWSTR_; 128 } 129 #endif 130 } 131 } 132 } 133 134 #endif // BOOST_DETAIL_WINAPI_BASIC_TYPES_HPP 135