| 1 | /*===- TableGen'erated file -------------------------------------*- C++ -*-===*\ |
| 2 | |* *| |
| 3 | |* Type and expression traits *| |
| 4 | |* *| |
| 5 | |* Automatically generated file, do not edit! *| |
| 6 | |* From: Traits.td *| |
| 7 | |* *| |
| 8 | \*===----------------------------------------------------------------------===*/ |
| 9 | |
| 10 | #if defined(EMIT_ENUMS) |
| 11 | /// Names for traits that operate specifically on types. |
| 12 | enum TypeTrait { |
| 13 | UTT_IsInterfaceClass, |
| 14 | UTT_IsSealed, |
| 15 | UTT_IsDestructible, |
| 16 | UTT_IsTriviallyDestructible, |
| 17 | UTT_IsNothrowDestructible, |
| 18 | UTT_HasNothrowMoveAssign, |
| 19 | UTT_HasTrivialMoveAssign, |
| 20 | UTT_HasTrivialMoveConstructor, |
| 21 | UTT_IsImplicitLifetime, |
| 22 | UTT_HasNothrowAssign, |
| 23 | UTT_HasNothrowCopy, |
| 24 | UTT_HasNothrowConstructor, |
| 25 | UTT_HasTrivialAssign, |
| 26 | UTT_HasTrivialCopy, |
| 27 | UTT_HasTrivialDefaultConstructor, |
| 28 | UTT_HasTrivialDestructor, |
| 29 | UTT_HasVirtualDestructor, |
| 30 | UTT_IsAbstract, |
| 31 | UTT_IsAggregate, |
| 32 | UTT_IsClass, |
| 33 | UTT_IsEmpty, |
| 34 | UTT_IsEnum, |
| 35 | UTT_IsFinal, |
| 36 | UTT_IsLiteral, |
| 37 | UTT_IsPOD, |
| 38 | UTT_IsPolymorphic, |
| 39 | UTT_IsStandardLayout, |
| 40 | UTT_IsTrivial, |
| 41 | UTT_IsTriviallyCopyable, |
| 42 | UTT_IsUnion, |
| 43 | UTT_HasUniqueObjectRepresentations, |
| 44 | UTT_IsTriviallyEqualityComparable, |
| 45 | UTT_IsBoundedArray, |
| 46 | UTT_IsUnboundedArray, |
| 47 | UTT_IsScopedEnum, |
| 48 | UTT_CanPassInRegs, |
| 49 | UTT_IsCppTriviallyRelocatable, |
| 50 | UTT_IsTriviallyRelocatable, |
| 51 | UTT_IsBitwiseCloneable, |
| 52 | UTT_StructuredBindingSize, |
| 53 | UTT_IsArithmetic, |
| 54 | UTT_IsFloatingPoint, |
| 55 | UTT_IsIntegral, |
| 56 | UTT_IsCompleteType, |
| 57 | UTT_IsVoid, |
| 58 | UTT_IsArray, |
| 59 | UTT_IsFunction, |
| 60 | UTT_IsReference, |
| 61 | UTT_IsLvalueReference, |
| 62 | UTT_IsRvalueReference, |
| 63 | UTT_IsFundamental, |
| 64 | UTT_IsObject, |
| 65 | UTT_IsScalar, |
| 66 | UTT_IsCompound, |
| 67 | UTT_IsPointer, |
| 68 | UTT_IsMemberObjectPointer, |
| 69 | UTT_IsMemberFunctionPointer, |
| 70 | UTT_IsMemberPointer, |
| 71 | UTT_IsConst, |
| 72 | UTT_IsVolatile, |
| 73 | UTT_IsSigned, |
| 74 | UTT_IsUnsigned, |
| 75 | UTT_IsIntangibleType, |
| 76 | UTT_IsTypedResourceElementCompatible, |
| 77 | UTT_IsConstantBufferElementCompatible, |
| 78 | UTT_Last = 64, // UTT_Last == last UTT_XX in the enum. |
| 79 | BTT_TypeCompatible, |
| 80 | BTT_IsNothrowAssignable, |
| 81 | BTT_IsAssignable, |
| 82 | BTT_IsVirtualBaseOf, |
| 83 | BTT_IsBaseOf, |
| 84 | BTT_IsConvertibleTo, |
| 85 | BTT_IsTriviallyAssignable, |
| 86 | BTT_IsLayoutCompatible, |
| 87 | BTT_IsPointerInterconvertibleBaseOf, |
| 88 | BTT_ReferenceBindsToTemporary, |
| 89 | BTT_ReferenceConstructsFromTemporary, |
| 90 | BTT_ReferenceConvertsFromTemporary, |
| 91 | BTT_LtSynthesizesFromSpaceship, |
| 92 | BTT_LeSynthesizesFromSpaceship, |
| 93 | BTT_GtSynthesizesFromSpaceship, |
| 94 | BTT_GeSynthesizesFromSpaceship, |
| 95 | BTT_IsDeducible, |
| 96 | BTT_IsSame, |
| 97 | BTT_IsConvertible, |
| 98 | BTT_IsNothrowConvertible, |
| 99 | BTT_IsScalarizedLayoutCompatible, |
| 100 | BTT_Last = 85, // BTT_Last == last BTT_XX in the enum. |
| 101 | TT_IsConstructible, |
| 102 | TT_IsNothrowConstructible, |
| 103 | TT_IsTriviallyConstructible, |
| 104 | TT_Last = 88 // TT_Last == last TT_XX in the enum. |
| 105 | }; |
| 106 | |
| 107 | /// Names for the array type traits. |
| 108 | enum ArrayTypeTrait { |
| 109 | ATT_ArrayRank, |
| 110 | ATT_ArrayExtent, |
| 111 | ATT_Last = 1 // ATT_Last == last ATT |
| 112 | }; |
| 113 | |
| 114 | /// Names for the "expression or type" traits. |
| 115 | enum UnaryExprOrTypeTrait { |
| 116 | UETT_SizeOf, |
| 117 | UETT_DataSizeOf, |
| 118 | UETT_CountOf, |
| 119 | UETT_PreferredAlignOf, |
| 120 | UETT_PtrAuthTypeDiscriminator, |
| 121 | UETT_VecStep, |
| 122 | UETT_OpenMPRequiredSimdAlign, |
| 123 | UETT_VectorElements, |
| 124 | UETT_AlignOf, |
| 125 | UETT_Last = 8 // UETT_Last == last UETT_XX in the enum. |
| 126 | }; |
| 127 | |
| 128 | #elif defined(EMIT_ARRAYS) |
| 129 | static constexpr const char *TypeTraitNames[] = { |
| 130 | "IsInterfaceClass" , |
| 131 | "IsSealed" , |
| 132 | "IsDestructible" , |
| 133 | "IsTriviallyDestructible" , |
| 134 | "IsNothrowDestructible" , |
| 135 | "HasNothrowMoveAssign" , |
| 136 | "HasTrivialMoveAssign" , |
| 137 | "HasTrivialMoveConstructor" , |
| 138 | "IsImplicitLifetime" , |
| 139 | "HasNothrowAssign" , |
| 140 | "HasNothrowCopy" , |
| 141 | "HasNothrowConstructor" , |
| 142 | "HasTrivialAssign" , |
| 143 | "HasTrivialCopy" , |
| 144 | "HasTrivialDefaultConstructor" , |
| 145 | "HasTrivialDestructor" , |
| 146 | "HasVirtualDestructor" , |
| 147 | "IsAbstract" , |
| 148 | "IsAggregate" , |
| 149 | "IsClass" , |
| 150 | "IsEmpty" , |
| 151 | "IsEnum" , |
| 152 | "IsFinal" , |
| 153 | "IsLiteral" , |
| 154 | "IsPOD" , |
| 155 | "IsPolymorphic" , |
| 156 | "IsStandardLayout" , |
| 157 | "IsTrivial" , |
| 158 | "IsTriviallyCopyable" , |
| 159 | "IsUnion" , |
| 160 | "HasUniqueObjectRepresentations" , |
| 161 | "IsTriviallyEqualityComparable" , |
| 162 | "IsBoundedArray" , |
| 163 | "IsUnboundedArray" , |
| 164 | "IsScopedEnum" , |
| 165 | "CanPassInRegs" , |
| 166 | "IsCppTriviallyRelocatable" , |
| 167 | "IsTriviallyRelocatable" , |
| 168 | "IsBitwiseCloneable" , |
| 169 | "StructuredBindingSize" , |
| 170 | "IsArithmetic" , |
| 171 | "IsFloatingPoint" , |
| 172 | "IsIntegral" , |
| 173 | "IsCompleteType" , |
| 174 | "IsVoid" , |
| 175 | "IsArray" , |
| 176 | "IsFunction" , |
| 177 | "IsReference" , |
| 178 | "IsLvalueReference" , |
| 179 | "IsRvalueReference" , |
| 180 | "IsFundamental" , |
| 181 | "IsObject" , |
| 182 | "IsScalar" , |
| 183 | "IsCompound" , |
| 184 | "IsPointer" , |
| 185 | "IsMemberObjectPointer" , |
| 186 | "IsMemberFunctionPointer" , |
| 187 | "IsMemberPointer" , |
| 188 | "IsConst" , |
| 189 | "IsVolatile" , |
| 190 | "IsSigned" , |
| 191 | "IsUnsigned" , |
| 192 | "IsIntangibleType" , |
| 193 | "IsTypedResourceElementCompatible" , |
| 194 | "IsConstantBufferElementCompatible" , |
| 195 | "TypeCompatible" , |
| 196 | "IsNothrowAssignable" , |
| 197 | "IsAssignable" , |
| 198 | "IsVirtualBaseOf" , |
| 199 | "IsBaseOf" , |
| 200 | "IsConvertibleTo" , |
| 201 | "IsTriviallyAssignable" , |
| 202 | "IsLayoutCompatible" , |
| 203 | "IsPointerInterconvertibleBaseOf" , |
| 204 | "ReferenceBindsToTemporary" , |
| 205 | "ReferenceConstructsFromTemporary" , |
| 206 | "ReferenceConvertsFromTemporary" , |
| 207 | "LtSynthesizesFromSpaceship" , |
| 208 | "LeSynthesizesFromSpaceship" , |
| 209 | "GtSynthesizesFromSpaceship" , |
| 210 | "GeSynthesizesFromSpaceship" , |
| 211 | "IsDeducible" , |
| 212 | "IsSame" , |
| 213 | "IsConvertible" , |
| 214 | "IsNothrowConvertible" , |
| 215 | "IsScalarizedLayoutCompatible" , |
| 216 | "IsConstructible" , |
| 217 | "IsNothrowConstructible" , |
| 218 | "IsTriviallyConstructible" , |
| 219 | }; |
| 220 | |
| 221 | static constexpr const char *TypeTraitSpellings[] = { |
| 222 | "__is_interface_class" , |
| 223 | "__is_sealed" , |
| 224 | "__is_destructible" , |
| 225 | "__is_trivially_destructible" , |
| 226 | "__is_nothrow_destructible" , |
| 227 | "__has_nothrow_move_assign" , |
| 228 | "__has_trivial_move_assign" , |
| 229 | "__has_trivial_move_constructor" , |
| 230 | "__builtin_is_implicit_lifetime" , |
| 231 | "__has_nothrow_assign" , |
| 232 | "__has_nothrow_copy" , |
| 233 | "__has_nothrow_constructor" , |
| 234 | "__has_trivial_assign" , |
| 235 | "__has_trivial_copy" , |
| 236 | "__has_trivial_constructor" , |
| 237 | "__has_trivial_destructor" , |
| 238 | "__has_virtual_destructor" , |
| 239 | "__is_abstract" , |
| 240 | "__is_aggregate" , |
| 241 | "__is_class" , |
| 242 | "__is_empty" , |
| 243 | "__is_enum" , |
| 244 | "__is_final" , |
| 245 | "__is_literal" , |
| 246 | "__is_pod" , |
| 247 | "__is_polymorphic" , |
| 248 | "__is_standard_layout" , |
| 249 | "__is_trivial" , |
| 250 | "__is_trivially_copyable" , |
| 251 | "__is_union" , |
| 252 | "__has_unique_object_representations" , |
| 253 | "__is_trivially_equality_comparable" , |
| 254 | "__is_bounded_array" , |
| 255 | "__is_unbounded_array" , |
| 256 | "__is_scoped_enum" , |
| 257 | "__can_pass_in_regs" , |
| 258 | "__builtin_is_cpp_trivially_relocatable" , |
| 259 | "__is_trivially_relocatable" , |
| 260 | "__is_bitwise_cloneable" , |
| 261 | "__builtin_structured_binding_size" , |
| 262 | "__is_arithmetic" , |
| 263 | "__is_floating_point" , |
| 264 | "__is_integral" , |
| 265 | "__is_complete_type" , |
| 266 | "__is_void" , |
| 267 | "__is_array" , |
| 268 | "__is_function" , |
| 269 | "__is_reference" , |
| 270 | "__is_lvalue_reference" , |
| 271 | "__is_rvalue_reference" , |
| 272 | "__is_fundamental" , |
| 273 | "__is_object" , |
| 274 | "__is_scalar" , |
| 275 | "__is_compound" , |
| 276 | "__is_pointer" , |
| 277 | "__is_member_object_pointer" , |
| 278 | "__is_member_function_pointer" , |
| 279 | "__is_member_pointer" , |
| 280 | "__is_const" , |
| 281 | "__is_volatile" , |
| 282 | "__is_signed" , |
| 283 | "__is_unsigned" , |
| 284 | "__builtin_hlsl_is_intangible" , |
| 285 | "__builtin_hlsl_is_typed_resource_element_compatible" , |
| 286 | "__builtin_hlsl_is_constant_buffer_element_compatible" , |
| 287 | "__builtin_types_compatible_p" , |
| 288 | "__is_nothrow_assignable" , |
| 289 | "__is_assignable" , |
| 290 | "__builtin_is_virtual_base_of" , |
| 291 | "__is_base_of" , |
| 292 | "__is_convertible_to" , |
| 293 | "__is_trivially_assignable" , |
| 294 | "__is_layout_compatible" , |
| 295 | "__is_pointer_interconvertible_base_of" , |
| 296 | "__reference_binds_to_temporary" , |
| 297 | "__reference_constructs_from_temporary" , |
| 298 | "__reference_converts_from_temporary" , |
| 299 | "__builtin_lt_synthesizes_from_spaceship" , |
| 300 | "__builtin_le_synthesizes_from_spaceship" , |
| 301 | "__builtin_gt_synthesizes_from_spaceship" , |
| 302 | "__builtin_ge_synthesizes_from_spaceship" , |
| 303 | "" , |
| 304 | "__is_same" , |
| 305 | "__is_convertible" , |
| 306 | "__is_nothrow_convertible" , |
| 307 | "__builtin_hlsl_is_scalarized_layout_compatible" , |
| 308 | "__is_constructible" , |
| 309 | "__is_nothrow_constructible" , |
| 310 | "__is_trivially_constructible" , |
| 311 | }; |
| 312 | |
| 313 | static constexpr const unsigned TypeTraitArities[] = { |
| 314 | 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, |
| 315 | 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, |
| 316 | 0, 0, 0 |
| 317 | }; |
| 318 | |
| 319 | static constexpr const char *ArrayTypeTraitNames[] = { |
| 320 | "ArrayRank" , |
| 321 | "ArrayExtent" , |
| 322 | }; |
| 323 | |
| 324 | static constexpr const char *ArrayTypeTraitSpellings[] = { |
| 325 | "__array_rank" , |
| 326 | "__array_extent" , |
| 327 | }; |
| 328 | |
| 329 | static constexpr const char *UnaryExprOrTypeTraitNames[] = { |
| 330 | "SizeOf" , |
| 331 | "DataSizeOf" , |
| 332 | "CountOf" , |
| 333 | "PreferredAlignOf" , |
| 334 | "PtrAuthTypeDiscriminator" , |
| 335 | "VecStep" , |
| 336 | "OpenMPRequiredSimdAlign" , |
| 337 | "VectorElements" , |
| 338 | "AlignOf" , |
| 339 | }; |
| 340 | |
| 341 | static constexpr const char *UnaryExprOrTypeTraitSpellings[] = { |
| 342 | "sizeof" , |
| 343 | "__datasizeof" , |
| 344 | "_Countof" , |
| 345 | "__alignof" , |
| 346 | "__builtin_ptrauth_type_discriminator" , |
| 347 | "vec_step" , |
| 348 | "__builtin_omp_required_simd_align" , |
| 349 | "__builtin_vectorelements" , |
| 350 | "alignof" , |
| 351 | }; |
| 352 | |
| 353 | #elif defined(EMIT_STD_NAME_CASES) |
| 354 | .Case("is_constructible" , TypeTrait::TT_IsConstructible) |
| 355 | .Case("is_assignable" , TypeTrait::BTT_IsAssignable) |
| 356 | .Case("is_abstract" , TypeTrait::UTT_IsAbstract) |
| 357 | .Case("is_aggregate" , TypeTrait::UTT_IsAggregate) |
| 358 | .Case("is_empty" , TypeTrait::UTT_IsEmpty) |
| 359 | .Case("is_final" , TypeTrait::UTT_IsFinal) |
| 360 | .Case("is_standard_layout" , TypeTrait::UTT_IsStandardLayout) |
| 361 | .Case("is_trivially_copyable" , TypeTrait::UTT_IsTriviallyCopyable) |
| 362 | .Case("is_trivially_relocatable" , TypeTrait::UTT_IsCppTriviallyRelocatable) |
| 363 | #else |
| 364 | #ifndef TYPE_TRAIT_1 |
| 365 | #define TYPE_TRAIT_1(I,E,K) |
| 366 | #endif |
| 367 | #ifndef TYPE_TRAIT_2 |
| 368 | #define TYPE_TRAIT_2(I,E,K) |
| 369 | #endif |
| 370 | #ifndef TYPE_TRAIT_N |
| 371 | #define TYPE_TRAIT_N(I,E,K) |
| 372 | #endif |
| 373 | #ifndef ARRAY_TYPE_TRAIT |
| 374 | #define ARRAY_TYPE_TRAIT(I,E,K) |
| 375 | #endif |
| 376 | #ifndef UNARY_EXPR_OR_TYPE_TRAIT |
| 377 | #define UNARY_EXPR_OR_TYPE_TRAIT(I,E,K) |
| 378 | #endif |
| 379 | #ifndef CXX11_UNARY_EXPR_OR_TYPE_TRAIT |
| 380 | #define CXX11_UNARY_EXPR_OR_TYPE_TRAIT(I,E,K) |
| 381 | #endif |
| 382 | #ifndef EXPRESSION_TRAIT |
| 383 | #define EXPRESSION_TRAIT(I,E,K) |
| 384 | #endif |
| 385 | #ifndef TRANSFORM_TYPE_TRAIT_DEF |
| 386 | #define TRANSFORM_TYPE_TRAIT_DEF(K, Trait) |
| 387 | #endif |
| 388 | #ifndef ALIAS |
| 389 | #define ALIAS(X,Y,Z) |
| 390 | #endif |
| 391 | |
| 392 | UNARY_EXPR_OR_TYPE_TRAIT(sizeof, SizeOf, KEYALL) |
| 393 | UNARY_EXPR_OR_TYPE_TRAIT(__datasizeof, DataSizeOf, KEYCXX) |
| 394 | UNARY_EXPR_OR_TYPE_TRAIT(_Countof, CountOf, KEYNOCXX) |
| 395 | CXX11_UNARY_EXPR_OR_TYPE_TRAIT(alignof, AlignOf, KEYC23) |
| 396 | UNARY_EXPR_OR_TYPE_TRAIT(__alignof, PreferredAlignOf, KEYALL) |
| 397 | TYPE_TRAIT_2(__builtin_types_compatible_p, TypeCompatible, KEYNOCXX) |
| 398 | TYPE_TRAIT_1(__is_interface_class, IsInterfaceClass, KEYMS) |
| 399 | TYPE_TRAIT_1(__is_sealed, IsSealed, KEYMS) |
| 400 | TYPE_TRAIT_1(__is_destructible, IsDestructible, KEYALL) |
| 401 | TYPE_TRAIT_1(__is_trivially_destructible, IsTriviallyDestructible, KEYCXX) |
| 402 | TYPE_TRAIT_1(__is_nothrow_destructible, IsNothrowDestructible, KEYALL) |
| 403 | TYPE_TRAIT_2(__is_nothrow_assignable, IsNothrowAssignable, KEYCXX) |
| 404 | TYPE_TRAIT_N(__is_constructible, IsConstructible, KEYCXX) |
| 405 | TYPE_TRAIT_N(__is_nothrow_constructible, IsNothrowConstructible, KEYCXX) |
| 406 | TYPE_TRAIT_2(__is_assignable, IsAssignable, KEYCXX) |
| 407 | TYPE_TRAIT_1(__has_nothrow_move_assign, HasNothrowMoveAssign, KEYCXX) |
| 408 | TYPE_TRAIT_1(__has_trivial_move_assign, HasTrivialMoveAssign, KEYCXX) |
| 409 | TYPE_TRAIT_1(__has_trivial_move_constructor, HasTrivialMoveConstructor, KEYCXX) |
| 410 | TYPE_TRAIT_1(__builtin_is_implicit_lifetime, IsImplicitLifetime, KEYCXX) |
| 411 | TYPE_TRAIT_2(__builtin_is_virtual_base_of, IsVirtualBaseOf, KEYCXX) |
| 412 | TYPE_TRAIT_1(__has_nothrow_assign, HasNothrowAssign, KEYCXX) |
| 413 | TYPE_TRAIT_1(__has_nothrow_copy, HasNothrowCopy, KEYCXX) |
| 414 | TYPE_TRAIT_1(__has_nothrow_constructor, HasNothrowConstructor, KEYCXX) |
| 415 | TYPE_TRAIT_1(__has_trivial_assign, HasTrivialAssign, KEYCXX) |
| 416 | TYPE_TRAIT_1(__has_trivial_copy, HasTrivialCopy, KEYCXX) |
| 417 | TYPE_TRAIT_1(__has_trivial_constructor, HasTrivialDefaultConstructor, KEYCXX) |
| 418 | TYPE_TRAIT_1(__has_trivial_destructor, HasTrivialDestructor, KEYCXX) |
| 419 | TYPE_TRAIT_1(__has_virtual_destructor, HasVirtualDestructor, KEYCXX) |
| 420 | TYPE_TRAIT_1(__is_abstract, IsAbstract, KEYCXX) |
| 421 | TYPE_TRAIT_1(__is_aggregate, IsAggregate, KEYCXX) |
| 422 | TYPE_TRAIT_2(__is_base_of, IsBaseOf, KEYCXX) |
| 423 | TYPE_TRAIT_1(__is_class, IsClass, KEYCXX) |
| 424 | TYPE_TRAIT_2(__is_convertible_to, IsConvertibleTo, KEYCXX) |
| 425 | TYPE_TRAIT_1(__is_empty, IsEmpty, KEYCXX) |
| 426 | TYPE_TRAIT_1(__is_enum, IsEnum, KEYCXX) |
| 427 | TYPE_TRAIT_1(__is_final, IsFinal, KEYCXX) |
| 428 | TYPE_TRAIT_1(__is_literal, IsLiteral, KEYCXX) |
| 429 | TYPE_TRAIT_1(__is_pod, IsPOD, KEYCXX) |
| 430 | TYPE_TRAIT_1(__is_polymorphic, IsPolymorphic, KEYCXX) |
| 431 | TYPE_TRAIT_1(__is_standard_layout, IsStandardLayout, KEYCXX) |
| 432 | TYPE_TRAIT_1(__is_trivial, IsTrivial, KEYCXX) |
| 433 | TYPE_TRAIT_2(__is_trivially_assignable, IsTriviallyAssignable, KEYCXX) |
| 434 | TYPE_TRAIT_N(__is_trivially_constructible, IsTriviallyConstructible, KEYCXX) |
| 435 | TYPE_TRAIT_1(__is_trivially_copyable, IsTriviallyCopyable, KEYCXX) |
| 436 | TYPE_TRAIT_1(__is_union, IsUnion, KEYCXX) |
| 437 | TYPE_TRAIT_1(__has_unique_object_representations, HasUniqueObjectRepresentations, KEYCXX) |
| 438 | TYPE_TRAIT_2(__is_layout_compatible, IsLayoutCompatible, KEYCXX) |
| 439 | TYPE_TRAIT_2(__is_pointer_interconvertible_base_of, IsPointerInterconvertibleBaseOf, KEYCXX) |
| 440 | TRANSFORM_TYPE_TRAIT_DEF(AddLvalueReference, add_lvalue_reference) |
| 441 | TRANSFORM_TYPE_TRAIT_DEF(AddPointer, add_pointer) |
| 442 | TRANSFORM_TYPE_TRAIT_DEF(AddRvalueReference, add_rvalue_reference) |
| 443 | TRANSFORM_TYPE_TRAIT_DEF(Decay, decay) |
| 444 | TRANSFORM_TYPE_TRAIT_DEF(MakeSigned, make_signed) |
| 445 | TRANSFORM_TYPE_TRAIT_DEF(MakeUnsigned, make_unsigned) |
| 446 | TRANSFORM_TYPE_TRAIT_DEF(RemoveAllExtents, remove_all_extents) |
| 447 | TRANSFORM_TYPE_TRAIT_DEF(RemoveConst, remove_const) |
| 448 | TRANSFORM_TYPE_TRAIT_DEF(RemoveCV, remove_cv) |
| 449 | TRANSFORM_TYPE_TRAIT_DEF(RemoveCVRef, remove_cvref) |
| 450 | TRANSFORM_TYPE_TRAIT_DEF(RemoveExtent, remove_extent) |
| 451 | TRANSFORM_TYPE_TRAIT_DEF(RemovePointer, remove_pointer) |
| 452 | TRANSFORM_TYPE_TRAIT_DEF(RemoveReference, remove_reference_t) |
| 453 | TRANSFORM_TYPE_TRAIT_DEF(RemoveRestrict, remove_restrict) |
| 454 | TRANSFORM_TYPE_TRAIT_DEF(RemoveVolatile, remove_volatile) |
| 455 | TRANSFORM_TYPE_TRAIT_DEF(EnumUnderlyingType, underlying_type) |
| 456 | TYPE_TRAIT_1(__is_trivially_equality_comparable, IsTriviallyEqualityComparable, KEYCXX) |
| 457 | TYPE_TRAIT_1(__is_bounded_array, IsBoundedArray, KEYCXX) |
| 458 | TYPE_TRAIT_1(__is_unbounded_array, IsUnboundedArray, KEYCXX) |
| 459 | TYPE_TRAIT_1(__is_scoped_enum, IsScopedEnum, KEYCXX) |
| 460 | TYPE_TRAIT_1(__can_pass_in_regs, CanPassInRegs, KEYCXX) |
| 461 | TYPE_TRAIT_2(__reference_binds_to_temporary, ReferenceBindsToTemporary, KEYCXX) |
| 462 | TYPE_TRAIT_2(__reference_constructs_from_temporary, ReferenceConstructsFromTemporary, KEYCXX) |
| 463 | TYPE_TRAIT_2(__reference_converts_from_temporary, ReferenceConvertsFromTemporary, KEYCXX) |
| 464 | TYPE_TRAIT_2(__builtin_lt_synthesizes_from_spaceship, LtSynthesizesFromSpaceship, KEYCXX) |
| 465 | TYPE_TRAIT_2(__builtin_le_synthesizes_from_spaceship, LeSynthesizesFromSpaceship, KEYCXX) |
| 466 | TYPE_TRAIT_2(__builtin_gt_synthesizes_from_spaceship, GtSynthesizesFromSpaceship, KEYCXX) |
| 467 | TYPE_TRAIT_2(__builtin_ge_synthesizes_from_spaceship, GeSynthesizesFromSpaceship, KEYCXX) |
| 468 | TYPE_TRAIT_2(, IsDeducible, KEYCXX) |
| 469 | TYPE_TRAIT_1(__builtin_is_cpp_trivially_relocatable, IsCppTriviallyRelocatable, KEYCXX) |
| 470 | TYPE_TRAIT_1(__is_trivially_relocatable, IsTriviallyRelocatable, KEYCXX) |
| 471 | TYPE_TRAIT_1(__is_bitwise_cloneable, IsBitwiseCloneable, KEYALL) |
| 472 | TYPE_TRAIT_1(__builtin_structured_binding_size, StructuredBindingSize, KEYCXX) |
| 473 | EXPRESSION_TRAIT(__is_lvalue_expr, IsLValueExpr, KEYCXX) |
| 474 | EXPRESSION_TRAIT(__is_rvalue_expr, IsRValueExpr, KEYCXX) |
| 475 | TYPE_TRAIT_1(__is_arithmetic, IsArithmetic, KEYCXX) |
| 476 | TYPE_TRAIT_1(__is_floating_point, IsFloatingPoint, KEYCXX) |
| 477 | TYPE_TRAIT_1(__is_integral, IsIntegral, KEYCXX) |
| 478 | TYPE_TRAIT_1(__is_complete_type, IsCompleteType, KEYCXX) |
| 479 | TYPE_TRAIT_1(__is_void, IsVoid, KEYCXX) |
| 480 | TYPE_TRAIT_1(__is_array, IsArray, KEYCXX) |
| 481 | TYPE_TRAIT_1(__is_function, IsFunction, KEYCXX) |
| 482 | TYPE_TRAIT_1(__is_reference, IsReference, KEYCXX) |
| 483 | TYPE_TRAIT_1(__is_lvalue_reference, IsLvalueReference, KEYCXX) |
| 484 | TYPE_TRAIT_1(__is_rvalue_reference, IsRvalueReference, KEYCXX) |
| 485 | TYPE_TRAIT_1(__is_fundamental, IsFundamental, KEYCXX) |
| 486 | TYPE_TRAIT_1(__is_object, IsObject, KEYCXX) |
| 487 | TYPE_TRAIT_1(__is_scalar, IsScalar, KEYCXX) |
| 488 | TYPE_TRAIT_1(__is_compound, IsCompound, KEYCXX) |
| 489 | TYPE_TRAIT_1(__is_pointer, IsPointer, KEYCXX) |
| 490 | TYPE_TRAIT_1(__is_member_object_pointer, IsMemberObjectPointer, KEYCXX) |
| 491 | TYPE_TRAIT_1(__is_member_function_pointer, IsMemberFunctionPointer, KEYCXX) |
| 492 | TYPE_TRAIT_1(__is_member_pointer, IsMemberPointer, KEYCXX) |
| 493 | TYPE_TRAIT_1(__is_const, IsConst, KEYCXX) |
| 494 | TYPE_TRAIT_1(__is_volatile, IsVolatile, KEYCXX) |
| 495 | TYPE_TRAIT_1(__is_signed, IsSigned, KEYCXX) |
| 496 | TYPE_TRAIT_1(__is_unsigned, IsUnsigned, KEYCXX) |
| 497 | TYPE_TRAIT_2(__is_same, IsSame, KEYCXX) |
| 498 | TYPE_TRAIT_2(__is_convertible, IsConvertible, KEYCXX) |
| 499 | TYPE_TRAIT_2(__is_nothrow_convertible, IsNothrowConvertible, KEYCXX) |
| 500 | ARRAY_TYPE_TRAIT(__array_rank, ArrayRank, KEYCXX) |
| 501 | ARRAY_TYPE_TRAIT(__array_extent, ArrayExtent, KEYCXX) |
| 502 | UNARY_EXPR_OR_TYPE_TRAIT(__builtin_ptrauth_type_discriminator, PtrAuthTypeDiscriminator, KEYALL) |
| 503 | UNARY_EXPR_OR_TYPE_TRAIT(vec_step, VecStep, KEYOPENCLC | KEYOPENCLCXX | KEYALTIVEC | KEYZVECTOR) |
| 504 | TYPE_TRAIT_2(__builtin_hlsl_is_scalarized_layout_compatible, IsScalarizedLayoutCompatible, KEYHLSL) |
| 505 | TYPE_TRAIT_1(__builtin_hlsl_is_intangible, IsIntangibleType, KEYHLSL) |
| 506 | TYPE_TRAIT_1(__builtin_hlsl_is_typed_resource_element_compatible, IsTypedResourceElementCompatible, KEYHLSL) |
| 507 | TYPE_TRAIT_1(__builtin_hlsl_is_constant_buffer_element_compatible, IsConstantBufferElementCompatible, KEYHLSL) |
| 508 | UNARY_EXPR_OR_TYPE_TRAIT(__builtin_omp_required_simd_align, OpenMPRequiredSimdAlign, KEYALL) |
| 509 | UNARY_EXPR_OR_TYPE_TRAIT(__builtin_vectorelements, VectorElements, KEYALL) |
| 510 | ALIAS("__alignof__" , __alignof, KEYALL) |
| 511 | ALIAS("__builtin_alignof" , __alignof, KEYMS) |
| 512 | ALIAS("_alignof" , __alignof, KEYMS) |
| 513 | ALIAS("__is_literal_type" , __is_literal, KEYCXX) |
| 514 | ALIAS("__is_same_as" , __is_same, KEYCXX) |
| 515 | #undef ALIAS |
| 516 | #undef TRANSFORM_TYPE_TRAIT_DEF |
| 517 | #undef EXPRESSION_TRAIT |
| 518 | #undef CXX11_UNARY_EXPR_OR_TYPE_TRAIT |
| 519 | #undef UNARY_EXPR_OR_TYPE_TRAIT |
| 520 | #undef ARRAY_TYPE_TRAIT |
| 521 | #undef TYPE_TRAIT_N |
| 522 | #undef TYPE_TRAIT_2 |
| 523 | #undef TYPE_TRAIT_1 |
| 524 | #endif |
| 525 | |
| 526 | |
| 527 | #undef EMIT_ARRAYS |
| 528 | #undef EMIT_ENUMS |
| 529 | #undef EMIT_STD_NAME_CASES |
| 530 | |
| 531 | |