Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 09:53:44

0001 /*
0002  * Copyright 2010 Vicente J. Botet Escriba
0003  * Copyright 2015-2018 Andrey Semashev
0004  *
0005  * Distributed under the Boost Software License, Version 1.0.
0006  * See http://www.boost.org/LICENSE_1_0.txt
0007  */
0008 
0009 #ifndef BOOST_WINAPI_BASIC_TYPES_HPP_INCLUDED_
0010 #define BOOST_WINAPI_BASIC_TYPES_HPP_INCLUDED_
0011 
0012 #include <boost/winapi/config.hpp>
0013 
0014 #ifdef BOOST_HAS_PRAGMA_ONCE
0015 #pragma once
0016 #endif
0017 
0018 #if defined(BOOST_USE_WINDOWS_H)
0019 # include <windows.h>
0020 #elif defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
0021 # ifdef UNDER_CE
0022 #  ifndef WINAPI
0023 #   ifndef _WIN32_WCE_EMULATION
0024 #    define WINAPI  __cdecl     // Note this doesn't match the desktop definition
0025 #   else
0026 #    define WINAPI  __stdcall
0027 #   endif
0028 #  endif
0029 // Windows CE defines a few functions as inline functions in kfuncs.h
0030 typedef int BOOL;
0031 typedef unsigned long DWORD;
0032 typedef void* HANDLE;
0033 typedef HANDLE HGLOBAL;
0034 typedef void* LPVOID;
0035 #  include <kfuncs.h>
0036 # endif // UNDER_CE
0037 #else
0038 # error "Win32 functions not available"
0039 #endif
0040 
0041 #include <boost/winapi/detail/header.hpp>
0042 
0043 #if defined(_M_IX86) || defined(__i386__)
0044 #define BOOST_WINAPI_DETAIL_STDCALL __stdcall
0045 #else
0046 // On architectures other than 32-bit x86 __stdcall is ignored. Clang also issues a warning.
0047 #define BOOST_WINAPI_DETAIL_STDCALL
0048 #endif
0049 
0050 #if defined(WINAPI)
0051 #define BOOST_WINAPI_WINAPI_CC WINAPI
0052 #else
0053 #define BOOST_WINAPI_WINAPI_CC BOOST_WINAPI_DETAIL_STDCALL
0054 #endif
0055 
0056 #if defined(CALLBACK)
0057 #define BOOST_WINAPI_CALLBACK_CC CALLBACK
0058 #else
0059 #define BOOST_WINAPI_CALLBACK_CC BOOST_WINAPI_DETAIL_STDCALL
0060 #endif
0061 
0062 #if defined(NTAPI)
0063 #define BOOST_WINAPI_NTAPI_CC NTAPI
0064 #else
0065 #define BOOST_WINAPI_NTAPI_CC BOOST_WINAPI_DETAIL_STDCALL
0066 #endif
0067 
0068 #ifndef NO_STRICT
0069 #ifndef STRICT
0070 #define STRICT 1
0071 #endif
0072 #endif
0073 
0074 #if defined(STRICT)
0075 #define BOOST_WINAPI_DETAIL_DECLARE_HANDLE(x) struct x##__; typedef struct x##__ *x
0076 #else
0077 #define BOOST_WINAPI_DETAIL_DECLARE_HANDLE(x) typedef void* x
0078 #endif
0079 
0080 #if !defined(BOOST_USE_WINDOWS_H)
0081 extern "C" {
0082 union _LARGE_INTEGER;
0083 struct _SECURITY_ATTRIBUTES;
0084 BOOST_WINAPI_DETAIL_DECLARE_HANDLE(HINSTANCE);
0085 typedef HINSTANCE HMODULE;
0086 }
0087 #endif
0088 
0089 #if defined(__GNUC__)
0090 #define BOOST_WINAPI_DETAIL_EXTENSION __extension__
0091 #else
0092 #define BOOST_WINAPI_DETAIL_EXTENSION
0093 #endif
0094 
0095 // MinGW64 gcc 4.8.2 fails to compile function declarations with boost::winapi::VOID_ arguments even though
0096 // the typedef expands to void. In Windows SDK, VOID is a macro which unfolds to void. We use our own macro in such cases.
0097 #define BOOST_WINAPI_DETAIL_VOID void
0098 
0099 namespace boost {
0100 namespace winapi {
0101 #if defined(BOOST_USE_WINDOWS_H)
0102 
0103 typedef ::BOOL BOOL_;
0104 typedef ::PBOOL PBOOL_;
0105 typedef ::LPBOOL LPBOOL_;
0106 typedef ::BOOLEAN BOOLEAN_;
0107 typedef ::PBOOLEAN PBOOLEAN_;
0108 typedef ::BYTE BYTE_;
0109 typedef ::PBYTE PBYTE_;
0110 typedef ::LPBYTE LPBYTE_;
0111 typedef ::UCHAR UCHAR_;
0112 typedef ::PUCHAR PUCHAR_;
0113 typedef ::WORD WORD_;
0114 typedef ::PWORD PWORD_;
0115 typedef ::LPWORD LPWORD_;
0116 typedef ::DWORD DWORD_;
0117 typedef ::PDWORD PDWORD_;
0118 typedef ::LPDWORD LPDWORD_;
0119 typedef ::HANDLE HANDLE_;
0120 typedef ::PHANDLE PHANDLE_;
0121 typedef ::SHORT SHORT_;
0122 typedef ::PSHORT PSHORT_;
0123 typedef ::USHORT USHORT_;
0124 typedef ::PUSHORT PUSHORT_;
0125 typedef ::INT INT_;
0126 typedef ::PINT PINT_;
0127 typedef ::LPINT LPINT_;
0128 typedef ::UINT UINT_;
0129 typedef ::PUINT PUINT_;
0130 typedef ::LONG LONG_;
0131 typedef ::PLONG PLONG_;
0132 typedef ::LPLONG LPLONG_;
0133 typedef ::ULONG ULONG_;
0134 typedef ::PULONG PULONG_;
0135 typedef ::LONGLONG ULONG64_;
0136 typedef ::ULONGLONG PULONG64_;
0137 typedef ::LONGLONG LONGLONG_;
0138 typedef ::ULONGLONG ULONGLONG_;
0139 typedef ::INT_PTR INT_PTR_;
0140 typedef ::UINT_PTR UINT_PTR_;
0141 typedef ::LONG_PTR LONG_PTR_;
0142 typedef ::ULONG_PTR ULONG_PTR_;
0143 typedef ::DWORD_PTR DWORD_PTR_;
0144 typedef ::PDWORD_PTR PDWORD_PTR_;
0145 typedef ::SIZE_T SIZE_T_;
0146 typedef ::PSIZE_T PSIZE_T_;
0147 typedef ::SSIZE_T SSIZE_T_;
0148 typedef ::PSSIZE_T PSSIZE_T_;
0149 typedef VOID VOID_; // VOID is a macro
0150 typedef ::PVOID PVOID_;
0151 typedef ::LPVOID LPVOID_;
0152 typedef ::LPCVOID LPCVOID_;
0153 typedef ::CHAR CHAR_;
0154 typedef ::LPSTR LPSTR_;
0155 typedef ::LPCSTR LPCSTR_;
0156 typedef ::WCHAR WCHAR_;
0157 typedef ::LPWSTR LPWSTR_;
0158 typedef ::LPCWSTR LPCWSTR_;
0159 
0160 #else // defined( BOOST_USE_WINDOWS_H )
0161 
0162 typedef int BOOL_;
0163 typedef BOOL_* PBOOL_;
0164 typedef BOOL_* LPBOOL_;
0165 typedef unsigned char BYTE_;
0166 typedef BYTE_* PBYTE_;
0167 typedef BYTE_* LPBYTE_;
0168 typedef unsigned char UCHAR_;
0169 typedef UCHAR_* PUCHAR_;
0170 typedef BYTE_ BOOLEAN_;
0171 typedef BOOLEAN_* PBOOLEAN_;
0172 typedef unsigned short WORD_;
0173 typedef WORD_* PWORD_;
0174 typedef WORD_* LPWORD_;
0175 #if !defined(__LP64__)
0176 typedef unsigned long DWORD_;
0177 #else
0178 typedef unsigned int DWORD_;
0179 #endif
0180 typedef DWORD_* PDWORD_;
0181 typedef DWORD_* LPDWORD_;
0182 typedef void* HANDLE_;
0183 typedef void** PHANDLE_;
0184 
0185 typedef short SHORT_;
0186 typedef SHORT_* PSHORT_;
0187 typedef unsigned short USHORT_;
0188 typedef USHORT_* PUSHORT_;
0189 typedef int INT_;
0190 typedef INT_* PINT_;
0191 typedef INT_* LPINT_;
0192 typedef unsigned int UINT_;
0193 typedef UINT_* PUINT_;
0194 #if !defined(__LP64__)
0195 typedef long LONG_;
0196 typedef unsigned long ULONG_;
0197 #else
0198 typedef int LONG_;
0199 typedef unsigned int ULONG_;
0200 #endif
0201 typedef LONG_* PLONG_;
0202 typedef LONG_* LPLONG_;
0203 typedef ULONG_* PULONG_;
0204 #if defined(BOOST_HAS_MS_INT64)
0205 BOOST_WINAPI_DETAIL_EXTENSION typedef __int64 LONGLONG_;
0206 BOOST_WINAPI_DETAIL_EXTENSION typedef unsigned __int64 ULONGLONG_;
0207 #else
0208 BOOST_WINAPI_DETAIL_EXTENSION typedef long long LONGLONG_;
0209 BOOST_WINAPI_DETAIL_EXTENSION typedef unsigned long long ULONGLONG_;
0210 #endif
0211 typedef LONGLONG_ LONG64_, *PLONG64_;
0212 typedef ULONGLONG_ ULONG64_, *PULONG64_;
0213 
0214 #if defined(_WIN64)
0215 typedef LONGLONG_ INT_PTR_;
0216 typedef ULONGLONG_ UINT_PTR_;
0217 typedef LONGLONG_ LONG_PTR_;
0218 typedef ULONGLONG_ ULONG_PTR_;
0219 #else
0220 typedef int INT_PTR_;
0221 typedef unsigned int UINT_PTR_;
0222 typedef long LONG_PTR_;
0223 typedef unsigned long ULONG_PTR_;
0224 #endif
0225 
0226 typedef ULONG_PTR_ DWORD_PTR_, *PDWORD_PTR_;
0227 typedef ULONG_PTR_ SIZE_T_, *PSIZE_T_;
0228 typedef LONG_PTR_ SSIZE_T_, *PSSIZE_T_;
0229 
0230 typedef void VOID_;
0231 typedef void *PVOID_;
0232 typedef void *LPVOID_;
0233 typedef const void *LPCVOID_;
0234 
0235 typedef char CHAR_;
0236 typedef CHAR_ *LPSTR_;
0237 typedef const CHAR_ *LPCSTR_;
0238 
0239 typedef wchar_t WCHAR_;
0240 typedef WCHAR_ *LPWSTR_;
0241 typedef const WCHAR_ *LPCWSTR_;
0242 
0243 #endif // defined( BOOST_USE_WINDOWS_H )
0244 
0245 // ::NTSTATUS is defined in ntdef.h or winternl.h in different Windows SDKs, and is not included by windows.h by default, so always use LONG_
0246 typedef LONG_ NTSTATUS_;
0247 typedef NTSTATUS_ *PNTSTATUS_;
0248 
0249 typedef ::HMODULE HMODULE_;
0250 
0251 typedef union BOOST_MAY_ALIAS _LARGE_INTEGER {
0252     BOOST_WINAPI_DETAIL_EXTENSION struct {
0253         DWORD_ LowPart;
0254         LONG_ HighPart;
0255     };
0256     struct {
0257         DWORD_ LowPart;
0258         LONG_ HighPart;
0259     } u;
0260     LONGLONG_ QuadPart;
0261 } LARGE_INTEGER_, *PLARGE_INTEGER_;
0262 
0263 typedef struct BOOST_MAY_ALIAS _SECURITY_ATTRIBUTES {
0264     DWORD_  nLength;
0265     LPVOID_ lpSecurityDescriptor;
0266     BOOL_   bInheritHandle;
0267 } SECURITY_ATTRIBUTES_, *PSECURITY_ATTRIBUTES_, *LPSECURITY_ATTRIBUTES_;
0268 
0269 }
0270 }
0271 
0272 #include <boost/winapi/detail/footer.hpp>
0273 
0274 #endif // BOOST_WINAPI_BASIC_TYPES_HPP_INCLUDED_