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