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