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 1 92 // To disable this feature on 64-bit platforms please #define VULKAN_HPP_TYPESAFE_CONVERSION 0 93 #if ( VK_USE_64_BIT_PTR_DEFINES == 1 ) 94 # if !defined( VULKAN_HPP_TYPESAFE_CONVERSION ) 95 # define VULKAN_HPP_TYPESAFE_CONVERSION 1 96 # endif 97 #endif 98 99 #if defined( __GNUC__ ) 100 # define GCC_VERSION ( __GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__ ) 101 #endif 102 103 #if !defined( VULKAN_HPP_HAS_UNRESTRICTED_UNIONS ) 104 # if defined( __clang__ ) 105 # if __has_feature( cxx_unrestricted_unions ) 106 # define VULKAN_HPP_HAS_UNRESTRICTED_UNIONS 107 # endif 108 # elif defined( __GNUC__ ) 109 # if 40600 <= GCC_VERSION 110 # define VULKAN_HPP_HAS_UNRESTRICTED_UNIONS 111 # endif 112 # elif defined( _MSC_VER ) 113 # if 1900 <= _MSC_VER 114 # define VULKAN_HPP_HAS_UNRESTRICTED_UNIONS 115 # endif 116 # endif 117 #endif 118 119 #if !defined( VULKAN_HPP_INLINE ) 120 # if defined( __clang__ ) 121 # if __has_attribute( always_inline ) 122 # define VULKAN_HPP_INLINE __attribute__( ( always_inline ) ) __inline__ 123 # else 124 # define VULKAN_HPP_INLINE inline 125 # endif 126 # elif defined( __GNUC__ ) 127 # define VULKAN_HPP_INLINE __attribute__( ( always_inline ) ) __inline__ 128 # elif defined( _MSC_VER ) 129 # define VULKAN_HPP_INLINE inline 130 # else 131 # define VULKAN_HPP_INLINE inline 132 # endif 133 #endif 134 135 #if ( VULKAN_HPP_TYPESAFE_CONVERSION == 1 ) 136 # define VULKAN_HPP_TYPESAFE_EXPLICIT 137 #else 138 # define VULKAN_HPP_TYPESAFE_EXPLICIT explicit 139 #endif 140 141 #if defined( __cpp_constexpr ) 142 # define VULKAN_HPP_CONSTEXPR constexpr 143 # if 201304 <= __cpp_constexpr 144 # define VULKAN_HPP_CONSTEXPR_14 constexpr 145 # else 146 # define VULKAN_HPP_CONSTEXPR_14 147 # endif 148 # if ( 201907 <= __cpp_constexpr ) && ( !defined( __GNUC__ ) || ( 110400 < GCC_VERSION ) ) 149 # define VULKAN_HPP_CONSTEXPR_20 constexpr 150 # else 151 # define VULKAN_HPP_CONSTEXPR_20 152 # endif 153 # define VULKAN_HPP_CONST_OR_CONSTEXPR constexpr 154 #else 155 # define VULKAN_HPP_CONSTEXPR 156 # define VULKAN_HPP_CONSTEXPR_14 157 # define VULKAN_HPP_CONST_OR_CONSTEXPR const 158 #endif 159 160 #if !defined( VULKAN_HPP_CONSTEXPR_INLINE ) 161 # if 201606L <= __cpp_inline_variables 162 # define VULKAN_HPP_CONSTEXPR_INLINE VULKAN_HPP_CONSTEXPR inline 163 # else 164 # define VULKAN_HPP_CONSTEXPR_INLINE VULKAN_HPP_CONSTEXPR 165 # endif 166 #endif 167 168 #if !defined( VULKAN_HPP_NOEXCEPT ) 169 # if defined( _MSC_VER ) && ( _MSC_VER <= 1800 ) 170 # define VULKAN_HPP_NOEXCEPT 171 # else 172 # define VULKAN_HPP_NOEXCEPT noexcept 173 # define VULKAN_HPP_HAS_NOEXCEPT 1 174 # if defined( VULKAN_HPP_NO_EXCEPTIONS ) 175 # define VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS noexcept 176 # else 177 # define VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS 178 # endif 179 # endif 180 #endif 181 182 #if 14 <= VULKAN_HPP_CPP_VERSION 183 # define VULKAN_HPP_DEPRECATED( msg ) [[deprecated( msg )]] 184 #else 185 # define VULKAN_HPP_DEPRECATED( msg ) 186 #endif 187 188 #if ( 17 <= VULKAN_HPP_CPP_VERSION ) && !defined( VULKAN_HPP_NO_NODISCARD_WARNINGS ) 189 # define VULKAN_HPP_NODISCARD [[nodiscard]] 190 # if defined( VULKAN_HPP_NO_EXCEPTIONS ) 191 # define VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS [[nodiscard]] 192 # else 193 # define VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS 194 # endif 195 #else 196 # define VULKAN_HPP_NODISCARD 197 # define VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS 198 #endif 199 200 #if !defined( VULKAN_HPP_NAMESPACE ) 201 # define VULKAN_HPP_NAMESPACE vk 202 #endif 203 204 #define VULKAN_HPP_STRINGIFY2( text ) #text 205 #define VULKAN_HPP_STRINGIFY( text ) VULKAN_HPP_STRINGIFY2( text ) 206 #define VULKAN_HPP_NAMESPACE_STRING VULKAN_HPP_STRINGIFY( VULKAN_HPP_NAMESPACE ) 207 208 #if !defined( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC ) 209 # if defined( VK_NO_PROTOTYPES ) 210 # define VULKAN_HPP_DISPATCH_LOADER_DYNAMIC 1 211 # else 212 # define VULKAN_HPP_DISPATCH_LOADER_DYNAMIC 0 213 # endif 214 #endif 215 216 #if !defined( VULKAN_HPP_STORAGE_API ) 217 # if defined( VULKAN_HPP_STORAGE_SHARED ) 218 # if defined( _MSC_VER ) 219 # if defined( VULKAN_HPP_STORAGE_SHARED_EXPORT ) 220 # define VULKAN_HPP_STORAGE_API __declspec( dllexport ) 221 # else 222 # define VULKAN_HPP_STORAGE_API __declspec( dllimport ) 223 # endif 224 # elif defined( __clang__ ) || defined( __GNUC__ ) 225 # if defined( VULKAN_HPP_STORAGE_SHARED_EXPORT ) 226 # define VULKAN_HPP_STORAGE_API __attribute__( ( visibility( "default" ) ) ) 227 # else 228 # define VULKAN_HPP_STORAGE_API 229 # endif 230 # else 231 # define VULKAN_HPP_STORAGE_API 232 # pragma warning Unknown import / export semantics 233 # endif 234 # else 235 # define VULKAN_HPP_STORAGE_API 236 # endif 237 #endif 238 239 namespace VULKAN_HPP_NAMESPACE 240 { 241 class DispatchLoaderDynamic; 242 } // namespace VULKAN_HPP_NAMESPACE 243 244 #if !defined( VULKAN_HPP_DEFAULT_DISPATCHER ) 245 # if VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 246 # define VULKAN_HPP_DEFAULT_DISPATCHER ::VULKAN_HPP_NAMESPACE::defaultDispatchLoaderDynamic 247 # define VULKAN_HPP_DEFAULT_DISPATCH_LOADER_DYNAMIC_STORAGE \ 248 namespace VULKAN_HPP_NAMESPACE \ 249 { \ 250 VULKAN_HPP_STORAGE_API ::VULKAN_HPP_NAMESPACE::DispatchLoaderDynamic defaultDispatchLoaderDynamic; \ 251 } 252 253 namespace VULKAN_HPP_NAMESPACE 254 { 255 extern VULKAN_HPP_STORAGE_API VULKAN_HPP_NAMESPACE::DispatchLoaderDynamic defaultDispatchLoaderDynamic; 256 } // namespace VULKAN_HPP_NAMESPACE 257 # else 258 # define VULKAN_HPP_DEFAULT_DISPATCHER ::VULKAN_HPP_NAMESPACE::getDispatchLoaderStatic() 259 # define VULKAN_HPP_DEFAULT_DISPATCH_LOADER_DYNAMIC_STORAGE 260 # endif 261 #endif 262 263 #if !defined( VULKAN_HPP_DEFAULT_DISPATCHER_TYPE ) 264 # if VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 265 # define VULKAN_HPP_DEFAULT_DISPATCHER_TYPE ::VULKAN_HPP_NAMESPACE::DispatchLoaderDynamic 266 # else 267 # define VULKAN_HPP_DEFAULT_DISPATCHER_TYPE ::VULKAN_HPP_NAMESPACE::DispatchLoaderStatic 268 # endif 269 #endif 270 271 #if defined( VULKAN_HPP_NO_DEFAULT_DISPATCHER ) 272 # define VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT 273 # define VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT 274 # define VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT 275 #else 276 # define VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT = {} 277 # define VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT = nullptr 278 # define VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT = VULKAN_HPP_DEFAULT_DISPATCHER 279 #endif 280 281 #if !defined( VULKAN_HPP_EXPECTED ) && ( 23 <= VULKAN_HPP_CPP_VERSION ) && defined( __cpp_lib_expected ) 282 # include <expected> 283 # define VULKAN_HPP_EXPECTED std::expected 284 # define VULKAN_HPP_UNEXPECTED std::unexpected 285 #endif 286 287 #if !defined( VULKAN_HPP_RAII_NAMESPACE ) 288 # define VULKAN_HPP_RAII_NAMESPACE raii 289 #endif 290 291 #if defined( VULKAN_HPP_NO_EXCEPTIONS ) && defined( VULKAN_HPP_EXPECTED ) 292 # define VULKAN_HPP_RAII_NO_EXCEPTIONS 293 # define VULKAN_HPP_RAII_CREATE_NOEXCEPT noexcept 294 #else 295 # define VULKAN_HPP_RAII_CREATE_NOEXCEPT 296 #endif 297 298 #endif