Vulkan-Hpp
vulkan_hpp_macros.hpp
Go to the documentation of this file.
1 // Copyright 2015-2024 The Khronos Group Inc.
2 //
3 // SPDX-License-Identifier: Apache-2.0 OR MIT
4 //
5 
6 // This header is generated from the Khronos Vulkan XML API Registry.
7 
8 #ifndef VULKAN_HPP_MACROS_HPP
9 #define VULKAN_HPP_MACROS_HPP
10 
11 #if defined( _MSVC_LANG )
12 # define VULKAN_HPP_CPLUSPLUS _MSVC_LANG
13 #else
14 # define VULKAN_HPP_CPLUSPLUS __cplusplus
15 #endif
16 
17 #if 202002L < VULKAN_HPP_CPLUSPLUS
18 # define VULKAN_HPP_CPP_VERSION 23
19 #elif 201703L < VULKAN_HPP_CPLUSPLUS
20 # define VULKAN_HPP_CPP_VERSION 20
21 #elif 201402L < VULKAN_HPP_CPLUSPLUS
22 # define VULKAN_HPP_CPP_VERSION 17
23 #elif 201103L < VULKAN_HPP_CPLUSPLUS
24 # define VULKAN_HPP_CPP_VERSION 14
25 #elif 199711L < VULKAN_HPP_CPLUSPLUS
26 # define VULKAN_HPP_CPP_VERSION 11
27 #else
28 # error "vulkan.hpp needs at least c++ standard version 11"
29 #endif
30 
31 // include headers holding feature-test macros
32 #if 20 <= VULKAN_HPP_CPP_VERSION
33 # include <version>
34 #else
35 # include <ciso646>
36 #endif
37 
38 #if defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
39 # if !defined( VULKAN_HPP_NO_SMART_HANDLE )
40 # define VULKAN_HPP_NO_SMART_HANDLE
41 # endif
42 #endif
43 
44 #if defined( VULKAN_HPP_NO_CONSTRUCTORS )
45 # if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
46 # define VULKAN_HPP_NO_STRUCT_CONSTRUCTORS
47 # endif
48 # if !defined( VULKAN_HPP_NO_UNION_CONSTRUCTORS )
49 # define VULKAN_HPP_NO_UNION_CONSTRUCTORS
50 # endif
51 #endif
52 
53 #if defined( VULKAN_HPP_NO_SETTERS )
54 # if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
55 # define VULKAN_HPP_NO_STRUCT_SETTERS
56 # endif
57 # if !defined( VULKAN_HPP_NO_UNION_SETTERS )
58 # define VULKAN_HPP_NO_UNION_SETTERS
59 # endif
60 #endif
61 
62 #if !defined( VULKAN_HPP_ASSERT )
63 # define VULKAN_HPP_ASSERT assert
64 #endif
65 
66 #if !defined( VULKAN_HPP_ASSERT_ON_RESULT )
67 # define VULKAN_HPP_ASSERT_ON_RESULT VULKAN_HPP_ASSERT
68 #endif
69 
70 #if !defined( VULKAN_HPP_STATIC_ASSERT )
71 # define VULKAN_HPP_STATIC_ASSERT static_assert
72 #endif
73 
74 #if !defined( VULKAN_HPP_ENABLE_DYNAMIC_LOADER_TOOL )
75 # define VULKAN_HPP_ENABLE_DYNAMIC_LOADER_TOOL 1
76 #endif
77 
78 #if !defined( __has_include )
79 # define __has_include( x ) false
80 #endif
81 
82 #if ( 201907 <= __cpp_lib_three_way_comparison ) && __has_include( <compare> ) && !defined( VULKAN_HPP_NO_SPACESHIP_OPERATOR )
83 # define VULKAN_HPP_HAS_SPACESHIP_OPERATOR
84 #endif
85 
86 #if ( 201803 <= __cpp_lib_span )
87 # define VULKAN_HPP_SUPPORT_SPAN
88 #endif
89 
90 // 32-bit vulkan is not typesafe for non-dispatchable handles, so don't allow copy constructors on this platform by default.
91 // To enable this feature on 32-bit platforms please define VULKAN_HPP_TYPESAFE_CONVERSION
92 #if ( VK_USE_64_BIT_PTR_DEFINES == 1 )
93 # if !defined( VULKAN_HPP_TYPESAFE_CONVERSION )
94 # define VULKAN_HPP_TYPESAFE_CONVERSION
95 # endif
96 #endif
97 
98 #if defined( __GNUC__ )
99 # define GCC_VERSION ( __GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__ )
100 #endif
101 
102 #if !defined( VULKAN_HPP_HAS_UNRESTRICTED_UNIONS )
103 # if defined( __clang__ )
104 # if __has_feature( cxx_unrestricted_unions )
105 # define VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
106 # endif
107 # elif defined( __GNUC__ )
108 # if 40600 <= GCC_VERSION
109 # define VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
110 # endif
111 # elif defined( _MSC_VER )
112 # if 1900 <= _MSC_VER
113 # define VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
114 # endif
115 # endif
116 #endif
117 
118 #if !defined( VULKAN_HPP_INLINE )
119 # if defined( __clang__ )
120 # if __has_attribute( always_inline )
121 # define VULKAN_HPP_INLINE __attribute__( ( always_inline ) ) __inline__
122 # else
123 # define VULKAN_HPP_INLINE inline
124 # endif
125 # elif defined( __GNUC__ )
126 # define VULKAN_HPP_INLINE __attribute__( ( always_inline ) ) __inline__
127 # elif defined( _MSC_VER )
128 # define VULKAN_HPP_INLINE inline
129 # else
130 # define VULKAN_HPP_INLINE inline
131 # endif
132 #endif
133 
134 #if defined( VULKAN_HPP_TYPESAFE_CONVERSION )
135 # define VULKAN_HPP_TYPESAFE_EXPLICIT
136 #else
137 # define VULKAN_HPP_TYPESAFE_EXPLICIT explicit
138 #endif
139 
140 #if defined( __cpp_constexpr )
141 # define VULKAN_HPP_CONSTEXPR constexpr
142 # if 201304 <= __cpp_constexpr
143 # define VULKAN_HPP_CONSTEXPR_14 constexpr
144 # else
145 # define VULKAN_HPP_CONSTEXPR_14
146 # endif
147 # if ( 201907 <= __cpp_constexpr ) && ( !defined( __GNUC__ ) || ( 110400 < GCC_VERSION ) )
148 # define VULKAN_HPP_CONSTEXPR_20 constexpr
149 # else
150 # define VULKAN_HPP_CONSTEXPR_20
151 # endif
152 # define VULKAN_HPP_CONST_OR_CONSTEXPR constexpr
153 #else
154 # define VULKAN_HPP_CONSTEXPR
155 # define VULKAN_HPP_CONSTEXPR_14
156 # define VULKAN_HPP_CONST_OR_CONSTEXPR const
157 #endif
158 
159 #if !defined( VULKAN_HPP_CONSTEXPR_INLINE )
160 # if 201606L <= __cpp_inline_variables
161 # define VULKAN_HPP_CONSTEXPR_INLINE VULKAN_HPP_CONSTEXPR inline
162 # else
163 # define VULKAN_HPP_CONSTEXPR_INLINE VULKAN_HPP_CONSTEXPR
164 # endif
165 #endif
166 
167 #if !defined( VULKAN_HPP_NOEXCEPT )
168 # if defined( _MSC_VER ) && ( _MSC_VER <= 1800 )
169 # define VULKAN_HPP_NOEXCEPT
170 # else
171 # define VULKAN_HPP_NOEXCEPT noexcept
172 # define VULKAN_HPP_HAS_NOEXCEPT 1
173 # if defined( VULKAN_HPP_NO_EXCEPTIONS )
174 # define VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS noexcept
175 # else
176 # define VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
177 # endif
178 # endif
179 #endif
180 
181 #if 14 <= VULKAN_HPP_CPP_VERSION
182 # define VULKAN_HPP_DEPRECATED( msg ) [[deprecated( msg )]]
183 #else
184 # define VULKAN_HPP_DEPRECATED( msg )
185 #endif
186 
187 #if ( 17 <= VULKAN_HPP_CPP_VERSION ) && !defined( VULKAN_HPP_NO_NODISCARD_WARNINGS )
188 # define VULKAN_HPP_NODISCARD [[nodiscard]]
189 # if defined( VULKAN_HPP_NO_EXCEPTIONS )
190 # define VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS [[nodiscard]]
191 # else
192 # define VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS
193 # endif
194 #else
195 # define VULKAN_HPP_NODISCARD
196 # define VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS
197 #endif
198 
199 #if !defined( VULKAN_HPP_NAMESPACE )
200 # define VULKAN_HPP_NAMESPACE vk
201 #endif
202 
203 #define VULKAN_HPP_STRINGIFY2( text ) #text
204 #define VULKAN_HPP_STRINGIFY( text ) VULKAN_HPP_STRINGIFY2( text )
205 #define VULKAN_HPP_NAMESPACE_STRING VULKAN_HPP_STRINGIFY( VULKAN_HPP_NAMESPACE )
206 
207 #if !defined( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC )
208 # if defined( VK_NO_PROTOTYPES )
209 # define VULKAN_HPP_DISPATCH_LOADER_DYNAMIC 1
210 # else
211 # define VULKAN_HPP_DISPATCH_LOADER_DYNAMIC 0
212 # endif
213 #endif
214 
215 #if !defined( VULKAN_HPP_STORAGE_API )
216 # if defined( VULKAN_HPP_STORAGE_SHARED )
217 # if defined( _MSC_VER )
218 # if defined( VULKAN_HPP_STORAGE_SHARED_EXPORT )
219 # define VULKAN_HPP_STORAGE_API __declspec( dllexport )
220 # else
221 # define VULKAN_HPP_STORAGE_API __declspec( dllimport )
222 # endif
223 # elif defined( __clang__ ) || defined( __GNUC__ )
224 # if defined( VULKAN_HPP_STORAGE_SHARED_EXPORT )
225 # define VULKAN_HPP_STORAGE_API __attribute__( ( visibility( "default" ) ) )
226 # else
227 # define VULKAN_HPP_STORAGE_API
228 # endif
229 # else
230 # define VULKAN_HPP_STORAGE_API
231 # pragma warning Unknown import / export semantics
232 # endif
233 # else
234 # define VULKAN_HPP_STORAGE_API
235 # endif
236 #endif
237 
238 namespace VULKAN_HPP_NAMESPACE
239 {
240  class DispatchLoaderDynamic;
241 } // namespace VULKAN_HPP_NAMESPACE
242 
243 #if !defined( VULKAN_HPP_DEFAULT_DISPATCHER )
244 # if VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1
245 # define VULKAN_HPP_DEFAULT_DISPATCHER ::VULKAN_HPP_NAMESPACE::defaultDispatchLoaderDynamic
246 # define VULKAN_HPP_DEFAULT_DISPATCH_LOADER_DYNAMIC_STORAGE \
247  namespace VULKAN_HPP_NAMESPACE \
248  { \
249  VULKAN_HPP_STORAGE_API ::VULKAN_HPP_NAMESPACE::DispatchLoaderDynamic defaultDispatchLoaderDynamic; \
250  }
251 
252 namespace VULKAN_HPP_NAMESPACE
253 {
254  extern VULKAN_HPP_STORAGE_API VULKAN_HPP_NAMESPACE::DispatchLoaderDynamic defaultDispatchLoaderDynamic;
255 } // namespace VULKAN_HPP_NAMESPACE
256 # else
257 # define VULKAN_HPP_DEFAULT_DISPATCHER ::VULKAN_HPP_NAMESPACE::getDispatchLoaderStatic()
258 # define VULKAN_HPP_DEFAULT_DISPATCH_LOADER_DYNAMIC_STORAGE
259 # endif
260 #endif
261 
262 #if !defined( VULKAN_HPP_DEFAULT_DISPATCHER_TYPE )
263 # if VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1
264 # define VULKAN_HPP_DEFAULT_DISPATCHER_TYPE ::VULKAN_HPP_NAMESPACE::DispatchLoaderDynamic
265 # else
266 # define VULKAN_HPP_DEFAULT_DISPATCHER_TYPE ::VULKAN_HPP_NAMESPACE::DispatchLoaderStatic
267 # endif
268 #endif
269 
270 #if defined( VULKAN_HPP_NO_DEFAULT_DISPATCHER )
271 # define VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT
272 # define VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT
273 # define VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT
274 #else
275 # define VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT = {}
276 # define VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT = nullptr
277 # define VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT = VULKAN_HPP_DEFAULT_DISPATCHER
278 #endif
279 
280 #if !defined( VULKAN_HPP_EXPECTED ) && ( 23 <= VULKAN_HPP_CPP_VERSION ) && defined( __cpp_lib_expected )
281 # include <expected>
282 # define VULKAN_HPP_EXPECTED std::expected
283 # define VULKAN_HPP_UNEXPECTED std::unexpected
284 #endif
285 
286 #if !defined( VULKAN_HPP_RAII_NAMESPACE )
287 # define VULKAN_HPP_RAII_NAMESPACE raii
288 #endif
289 
290 #if defined( VULKAN_HPP_NO_EXCEPTIONS ) && defined( VULKAN_HPP_EXPECTED )
291 # define VULKAN_HPP_RAII_NO_EXCEPTIONS
292 # define VULKAN_HPP_RAII_CREATE_NOEXCEPT noexcept
293 #else
294 # define VULKAN_HPP_RAII_CREATE_NOEXCEPT
295 #endif
296 
297 #endif
#define VULKAN_HPP_STORAGE_API