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