]> git.proxmox.com Git - ceph.git/blame - ceph/src/boost/boost/winapi/basic_types.hpp
import quincy beta 17.1.0
[ceph.git] / ceph / src / boost / boost / winapi / basic_types.hpp
CommitLineData
b32b8144
FG
1/*
2 * Copyright 2010 Vicente J. Botet Escriba
92f5a8d4 3 * Copyright 2015-2018 Andrey Semashev
b32b8144
FG
4 *
5 * Distributed under the Boost Software License, Version 1.0.
6 * See http://www.boost.org/LICENSE_1_0.txt
7 */
7c673cae 8
b32b8144
FG
9#ifndef BOOST_WINAPI_BASIC_TYPES_HPP_INCLUDED_
10#define BOOST_WINAPI_BASIC_TYPES_HPP_INCLUDED_
7c673cae 11
b32b8144 12#include <boost/winapi/config.hpp>
7c673cae
FG
13
14#ifdef BOOST_HAS_PRAGMA_ONCE
15#pragma once
16#endif
17
92f5a8d4 18#if defined(BOOST_USE_WINDOWS_H)
7c673cae 19# include <windows.h>
20effc67 20#elif defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
7c673cae
FG
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// Windows CE defines a few functions as inline functions in kfuncs.h
30typedef int BOOL;
31typedef unsigned long DWORD;
32typedef void* HANDLE;
20effc67
TL
33typedef HANDLE HGLOBAL;
34typedef void* LPVOID;
7c673cae 35# include <kfuncs.h>
92f5a8d4 36# endif // UNDER_CE
7c673cae
FG
37#else
38# error "Win32 functions not available"
39#endif
40
20effc67
TL
41#include <boost/winapi/detail/header.hpp>
42
92f5a8d4
TL
43#if defined(_M_IX86) || defined(__i386__)
44#define BOOST_WINAPI_DETAIL_STDCALL __stdcall
45#else
46// On architectures other than 32-bit x86 __stdcall is ignored. Clang also issues a warning.
47#define BOOST_WINAPI_DETAIL_STDCALL
48#endif
49
50#if defined(WINAPI)
51#define BOOST_WINAPI_WINAPI_CC WINAPI
52#else
53#define BOOST_WINAPI_WINAPI_CC BOOST_WINAPI_DETAIL_STDCALL
54#endif
55
56#if defined(CALLBACK)
57#define BOOST_WINAPI_CALLBACK_CC CALLBACK
58#else
59#define BOOST_WINAPI_CALLBACK_CC BOOST_WINAPI_DETAIL_STDCALL
60#endif
61
62#if defined(NTAPI)
63#define BOOST_WINAPI_NTAPI_CC NTAPI
64#else
65#define BOOST_WINAPI_NTAPI_CC BOOST_WINAPI_DETAIL_STDCALL
66#endif
67
7c673cae
FG
68#ifndef NO_STRICT
69#ifndef STRICT
70#define STRICT 1
71#endif
72#endif
73
74#if defined(STRICT)
b32b8144 75#define BOOST_WINAPI_DETAIL_DECLARE_HANDLE(x) struct x##__; typedef struct x##__ *x
7c673cae 76#else
b32b8144 77#define BOOST_WINAPI_DETAIL_DECLARE_HANDLE(x) typedef void* x
7c673cae
FG
78#endif
79
92f5a8d4 80#if !defined(BOOST_USE_WINDOWS_H)
7c673cae
FG
81extern "C" {
82union _LARGE_INTEGER;
83struct _SECURITY_ATTRIBUTES;
b32b8144 84BOOST_WINAPI_DETAIL_DECLARE_HANDLE(HINSTANCE);
7c673cae
FG
85typedef HINSTANCE HMODULE;
86}
87#endif
88
89#if defined(__GNUC__)
b32b8144 90#define BOOST_WINAPI_DETAIL_EXTENSION __extension__
7c673cae 91#else
b32b8144 92#define BOOST_WINAPI_DETAIL_EXTENSION
7c673cae
FG
93#endif
94
b32b8144 95// MinGW64 gcc 4.8.2 fails to compile function declarations with boost::winapi::VOID_ arguments even though
7c673cae 96// the typedef expands to void. In Windows SDK, VOID is a macro which unfolds to void. We use our own macro in such cases.
b32b8144 97#define BOOST_WINAPI_DETAIL_VOID void
7c673cae
FG
98
99namespace boost {
7c673cae 100namespace winapi {
92f5a8d4 101#if defined(BOOST_USE_WINDOWS_H)
7c673cae
FG
102
103typedef ::BOOL BOOL_;
104typedef ::PBOOL PBOOL_;
105typedef ::LPBOOL LPBOOL_;
106typedef ::BOOLEAN BOOLEAN_;
107typedef ::PBOOLEAN PBOOLEAN_;
108typedef ::BYTE BYTE_;
109typedef ::PBYTE PBYTE_;
110typedef ::LPBYTE LPBYTE_;
b32b8144
FG
111typedef ::UCHAR UCHAR_;
112typedef ::PUCHAR PUCHAR_;
7c673cae
FG
113typedef ::WORD WORD_;
114typedef ::PWORD PWORD_;
115typedef ::LPWORD LPWORD_;
116typedef ::DWORD DWORD_;
117typedef ::PDWORD PDWORD_;
118typedef ::LPDWORD LPDWORD_;
119typedef ::HANDLE HANDLE_;
120typedef ::PHANDLE PHANDLE_;
121typedef ::SHORT SHORT_;
122typedef ::PSHORT PSHORT_;
123typedef ::USHORT USHORT_;
124typedef ::PUSHORT PUSHORT_;
125typedef ::INT INT_;
126typedef ::PINT PINT_;
127typedef ::LPINT LPINT_;
128typedef ::UINT UINT_;
129typedef ::PUINT PUINT_;
130typedef ::LONG LONG_;
131typedef ::PLONG PLONG_;
132typedef ::LPLONG LPLONG_;
133typedef ::ULONG ULONG_;
134typedef ::PULONG PULONG_;
b32b8144
FG
135typedef ::LONGLONG ULONG64_;
136typedef ::ULONGLONG PULONG64_;
7c673cae
FG
137typedef ::LONGLONG LONGLONG_;
138typedef ::ULONGLONG ULONGLONG_;
139typedef ::INT_PTR INT_PTR_;
140typedef ::UINT_PTR UINT_PTR_;
141typedef ::LONG_PTR LONG_PTR_;
142typedef ::ULONG_PTR ULONG_PTR_;
143typedef ::DWORD_PTR DWORD_PTR_;
144typedef ::PDWORD_PTR PDWORD_PTR_;
145typedef ::SIZE_T SIZE_T_;
146typedef ::PSIZE_T PSIZE_T_;
147typedef ::SSIZE_T SSIZE_T_;
148typedef ::PSSIZE_T PSSIZE_T_;
149typedef VOID VOID_; // VOID is a macro
150typedef ::PVOID PVOID_;
151typedef ::LPVOID LPVOID_;
152typedef ::LPCVOID LPCVOID_;
153typedef ::CHAR CHAR_;
154typedef ::LPSTR LPSTR_;
155typedef ::LPCSTR LPCSTR_;
156typedef ::WCHAR WCHAR_;
157typedef ::LPWSTR LPWSTR_;
158typedef ::LPCWSTR LPCWSTR_;
159
160#else // defined( BOOST_USE_WINDOWS_H )
161
162typedef int BOOL_;
163typedef BOOL_* PBOOL_;
164typedef BOOL_* LPBOOL_;
165typedef unsigned char BYTE_;
166typedef BYTE_* PBYTE_;
167typedef BYTE_* LPBYTE_;
b32b8144
FG
168typedef unsigned char UCHAR_;
169typedef UCHAR_* PUCHAR_;
7c673cae
FG
170typedef BYTE_ BOOLEAN_;
171typedef BOOLEAN_* PBOOLEAN_;
172typedef unsigned short WORD_;
173typedef WORD_* PWORD_;
174typedef WORD_* LPWORD_;
92f5a8d4 175#if !defined(__LP64__)
7c673cae 176typedef unsigned long DWORD_;
92f5a8d4
TL
177#else
178typedef unsigned int DWORD_;
179#endif
7c673cae
FG
180typedef DWORD_* PDWORD_;
181typedef DWORD_* LPDWORD_;
182typedef void* HANDLE_;
183typedef void** PHANDLE_;
184
185typedef short SHORT_;
186typedef SHORT_* PSHORT_;
187typedef unsigned short USHORT_;
188typedef USHORT_* PUSHORT_;
189typedef int INT_;
190typedef INT_* PINT_;
191typedef INT_* LPINT_;
192typedef unsigned int UINT_;
193typedef UINT_* PUINT_;
92f5a8d4 194#if !defined(__LP64__)
7c673cae 195typedef long LONG_;
92f5a8d4
TL
196typedef unsigned long ULONG_;
197#else
198typedef int LONG_;
199typedef unsigned int ULONG_;
200#endif
7c673cae
FG
201typedef LONG_* PLONG_;
202typedef LONG_* LPLONG_;
7c673cae 203typedef ULONG_* PULONG_;
92f5a8d4
TL
204#if defined(BOOST_HAS_MS_INT64)
205BOOST_WINAPI_DETAIL_EXTENSION typedef __int64 LONGLONG_;
206BOOST_WINAPI_DETAIL_EXTENSION typedef unsigned __int64 ULONGLONG_;
207#else
208BOOST_WINAPI_DETAIL_EXTENSION typedef long long LONGLONG_;
209BOOST_WINAPI_DETAIL_EXTENSION typedef unsigned long long ULONGLONG_;
210#endif
211typedef LONGLONG_ LONG64_, *PLONG64_;
212typedef ULONGLONG_ ULONG64_, *PULONG64_;
7c673cae 213
92f5a8d4
TL
214#if defined(_WIN64)
215typedef LONGLONG_ INT_PTR_;
216typedef ULONGLONG_ UINT_PTR_;
217typedef LONGLONG_ LONG_PTR_;
218typedef ULONGLONG_ ULONG_PTR_;
219#else
7c673cae
FG
220typedef int INT_PTR_;
221typedef unsigned int UINT_PTR_;
222typedef long LONG_PTR_;
223typedef unsigned long ULONG_PTR_;
92f5a8d4 224#endif
7c673cae
FG
225
226typedef ULONG_PTR_ DWORD_PTR_, *PDWORD_PTR_;
227typedef ULONG_PTR_ SIZE_T_, *PSIZE_T_;
228typedef LONG_PTR_ SSIZE_T_, *PSSIZE_T_;
229
230typedef void VOID_;
231typedef void *PVOID_;
232typedef void *LPVOID_;
233typedef const void *LPCVOID_;
234
235typedef char CHAR_;
236typedef CHAR_ *LPSTR_;
237typedef const CHAR_ *LPCSTR_;
238
239typedef wchar_t WCHAR_;
240typedef WCHAR_ *LPWSTR_;
241typedef const WCHAR_ *LPCWSTR_;
242
243#endif // defined( BOOST_USE_WINDOWS_H )
244
92f5a8d4
TL
245// ::NTSTATUS is defined in ntdef.h, which is not included by windows.h by default, so alwaus use LONG_
246typedef LONG_ NTSTATUS_;
247typedef NTSTATUS_ *PNTSTATUS_;
248
7c673cae
FG
249typedef ::HMODULE HMODULE_;
250
b32b8144 251typedef union BOOST_MAY_ALIAS _LARGE_INTEGER {
92f5a8d4
TL
252 BOOST_WINAPI_DETAIL_EXTENSION struct {
253 DWORD_ LowPart;
254 LONG_ HighPart;
255 };
7c673cae
FG
256 struct {
257 DWORD_ LowPart;
258 LONG_ HighPart;
259 } u;
260 LONGLONG_ QuadPart;
261} LARGE_INTEGER_, *PLARGE_INTEGER_;
262
b32b8144 263typedef struct BOOST_MAY_ALIAS _SECURITY_ATTRIBUTES {
7c673cae
FG
264 DWORD_ nLength;
265 LPVOID_ lpSecurityDescriptor;
266 BOOL_ bInheritHandle;
267} SECURITY_ATTRIBUTES_, *PSECURITY_ATTRIBUTES_, *LPSECURITY_ATTRIBUTES_;
268
7c673cae
FG
269}
270}
271
20effc67
TL
272#include <boost/winapi/detail/footer.hpp>
273
b32b8144 274#endif // BOOST_WINAPI_BASIC_TYPES_HPP_INCLUDED_