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