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