8 #ifndef VULKAN_HPP_MACROS_HPP
9 #define VULKAN_HPP_MACROS_HPP
11 #if defined( _MSVC_LANG )
12 # define VULKAN_HPP_CPLUSPLUS _MSVC_LANG
14 # define VULKAN_HPP_CPLUSPLUS __cplusplus
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
28 # error "vulkan.hpp needs at least c++ standard version 11"
32 #if 20 <= VULKAN_HPP_CPP_VERSION
38 #if defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
39 # if !defined( VULKAN_HPP_NO_SMART_HANDLE )
40 # define VULKAN_HPP_NO_SMART_HANDLE
44 #if defined( VULKAN_HPP_NO_CONSTRUCTORS )
45 # if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
46 # define VULKAN_HPP_NO_STRUCT_CONSTRUCTORS
48 # if !defined( VULKAN_HPP_NO_UNION_CONSTRUCTORS )
49 # define VULKAN_HPP_NO_UNION_CONSTRUCTORS
53 #if defined( VULKAN_HPP_NO_SETTERS )
54 # if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
55 # define VULKAN_HPP_NO_STRUCT_SETTERS
57 # if !defined( VULKAN_HPP_NO_UNION_SETTERS )
58 # define VULKAN_HPP_NO_UNION_SETTERS
62 #if !defined( VULKAN_HPP_ASSERT )
63 # define VULKAN_HPP_ASSERT assert
66 #if !defined( VULKAN_HPP_ASSERT_ON_RESULT )
67 # define VULKAN_HPP_ASSERT_ON_RESULT VULKAN_HPP_ASSERT
70 #if !defined( VULKAN_HPP_STATIC_ASSERT )
71 # define VULKAN_HPP_STATIC_ASSERT static_assert
74 #if !defined( VULKAN_HPP_ENABLE_DYNAMIC_LOADER_TOOL )
75 # define VULKAN_HPP_ENABLE_DYNAMIC_LOADER_TOOL 1
78 #if !defined( __has_include )
79 # define __has_include( x ) false
82 #if ( 201907 <= __cpp_lib_three_way_comparison ) && __has_include( <compare> ) && !defined( VULKAN_HPP_NO_SPACESHIP_OPERATOR )
83 # define VULKAN_HPP_HAS_SPACESHIP_OPERATOR
86 #if ( 201803 <= __cpp_lib_span )
87 # define VULKAN_HPP_SUPPORT_SPAN
92 #if ( VK_USE_64_BIT_PTR_DEFINES == 1 )
93 # if !defined( VULKAN_HPP_TYPESAFE_CONVERSION )
94 # define VULKAN_HPP_TYPESAFE_CONVERSION
98 #if defined( __GNUC__ )
99 # define GCC_VERSION ( __GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__ )
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
107 # elif defined( __GNUC__ )
108 # if 40600 <= GCC_VERSION
109 # define VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
111 # elif defined( _MSC_VER )
112 # if 1900 <= _MSC_VER
113 # define VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
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__
123 # define VULKAN_HPP_INLINE inline
125 # elif defined( __GNUC__ )
126 # define VULKAN_HPP_INLINE __attribute__( ( always_inline ) ) __inline__
127 # elif defined( _MSC_VER )
128 # define VULKAN_HPP_INLINE inline
130 # define VULKAN_HPP_INLINE inline
134 #if defined( VULKAN_HPP_TYPESAFE_CONVERSION )
135 # define VULKAN_HPP_TYPESAFE_EXPLICIT
137 # define VULKAN_HPP_TYPESAFE_EXPLICIT explicit
140 #if defined( __cpp_constexpr )
141 # define VULKAN_HPP_CONSTEXPR constexpr
142 # if 201304 <= __cpp_constexpr
143 # define VULKAN_HPP_CONSTEXPR_14 constexpr
145 # define VULKAN_HPP_CONSTEXPR_14
147 # if ( 201907 <= __cpp_constexpr ) && ( !defined( __GNUC__ ) || ( 110400 < GCC_VERSION ) )
148 # define VULKAN_HPP_CONSTEXPR_20 constexpr
150 # define VULKAN_HPP_CONSTEXPR_20
152 # define VULKAN_HPP_CONST_OR_CONSTEXPR constexpr
154 # define VULKAN_HPP_CONSTEXPR
155 # define VULKAN_HPP_CONSTEXPR_14
156 # define VULKAN_HPP_CONST_OR_CONSTEXPR const
159 #if !defined( VULKAN_HPP_CONSTEXPR_INLINE )
160 # if 201606L <= __cpp_inline_variables
161 # define VULKAN_HPP_CONSTEXPR_INLINE VULKAN_HPP_CONSTEXPR inline
163 # define VULKAN_HPP_CONSTEXPR_INLINE VULKAN_HPP_CONSTEXPR
167 #if !defined( VULKAN_HPP_NOEXCEPT )
168 # if defined( _MSC_VER ) && ( _MSC_VER <= 1800 )
169 # define VULKAN_HPP_NOEXCEPT
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
176 # define VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
181 #if 14 <= VULKAN_HPP_CPP_VERSION
182 # define VULKAN_HPP_DEPRECATED( msg ) [[deprecated( msg )]]
184 # define VULKAN_HPP_DEPRECATED( msg )
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]]
192 # define VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS
195 # define VULKAN_HPP_NODISCARD
196 # define VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS
199 #if !defined( VULKAN_HPP_NAMESPACE )
200 # define VULKAN_HPP_NAMESPACE vk
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 )
207 #if !defined( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC )
208 # if defined( VK_NO_PROTOTYPES )
209 # define VULKAN_HPP_DISPATCH_LOADER_DYNAMIC 1
211 # define VULKAN_HPP_DISPATCH_LOADER_DYNAMIC 0
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 )
221 # define VULKAN_HPP_STORAGE_API __declspec( dllimport )
223 # elif defined( __clang__ ) || defined( __GNUC__ )
224 # if defined( VULKAN_HPP_STORAGE_SHARED_EXPORT )
225 # define VULKAN_HPP_STORAGE_API __attribute__( ( visibility( "default" ) ) )
227 # define VULKAN_HPP_STORAGE_API
230 # define VULKAN_HPP_STORAGE_API
231 # pragma warning Unknown import / export semantics
234 # define VULKAN_HPP_STORAGE_API
238 namespace VULKAN_HPP_NAMESPACE
240 class DispatchLoaderDynamic;
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 \
249 VULKAN_HPP_STORAGE_API ::VULKAN_HPP_NAMESPACE::DispatchLoaderDynamic defaultDispatchLoaderDynamic; \
252 namespace VULKAN_HPP_NAMESPACE
257 # define VULKAN_HPP_DEFAULT_DISPATCHER ::VULKAN_HPP_NAMESPACE::getDispatchLoaderStatic()
258 # define VULKAN_HPP_DEFAULT_DISPATCH_LOADER_DYNAMIC_STORAGE
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
266 # define VULKAN_HPP_DEFAULT_DISPATCHER_TYPE ::VULKAN_HPP_NAMESPACE::DispatchLoaderStatic
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
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
280 #if !defined( VULKAN_HPP_EXPECTED ) && ( 23 <= VULKAN_HPP_CPP_VERSION ) && defined( __cpp_lib_expected )
282 # define VULKAN_HPP_EXPECTED std::expected
283 # define VULKAN_HPP_UNEXPECTED std::unexpected
286 #if !defined( VULKAN_HPP_RAII_NAMESPACE )
287 # define VULKAN_HPP_RAII_NAMESPACE raii
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
294 # define VULKAN_HPP_RAII_CREATE_NOEXCEPT
#define VULKAN_HPP_STORAGE_API