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