vulkan_hpp_macros.hpp 8.3 KB

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