1 //===--- TypeTraits.h - C++ Type Traits Support Enumerations ----*- C++ -*-===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is distributed under the University of Illinois Open Source 6 // License. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 /// 10 /// \file 11 /// \brief Defines enumerations for the type traits support. 12 /// 13 //===----------------------------------------------------------------------===// 14 15 #ifndef LLVM_CLANG_BASIC_TYPETRAITS_H 16 #define LLVM_CLANG_BASIC_TYPETRAITS_H 17 18 namespace clang { 19 20 /// \brief Names for traits that operate specifically on types. 21 enum TypeTrait { 22 UTT_HasNothrowAssign, 23 UTT_HasNothrowMoveAssign, 24 UTT_HasNothrowCopy, 25 UTT_HasNothrowConstructor, 26 UTT_HasTrivialAssign, 27 UTT_HasTrivialMoveAssign, 28 UTT_HasTrivialCopy, 29 UTT_HasTrivialDefaultConstructor, 30 UTT_HasTrivialMoveConstructor, 31 UTT_HasTrivialDestructor, 32 UTT_HasVirtualDestructor, 33 UTT_IsAbstract, 34 UTT_IsAggregate, 35 UTT_IsArithmetic, 36 UTT_IsArray, 37 UTT_IsClass, 38 UTT_IsCompleteType, 39 UTT_IsCompound, 40 UTT_IsConst, 41 UTT_IsDestructible, 42 UTT_IsEmpty, 43 UTT_IsEnum, 44 UTT_IsFinal, 45 UTT_IsFloatingPoint, 46 UTT_IsFunction, 47 UTT_IsFundamental, 48 UTT_IsIntegral, 49 UTT_IsInterfaceClass, 50 UTT_IsLiteral, 51 UTT_IsLvalueReference, 52 UTT_IsMemberFunctionPointer, 53 UTT_IsMemberObjectPointer, 54 UTT_IsMemberPointer, 55 UTT_IsNothrowDestructible, 56 UTT_IsObject, 57 UTT_IsPOD, 58 UTT_IsPointer, 59 UTT_IsPolymorphic, 60 UTT_IsReference, 61 UTT_IsRvalueReference, 62 UTT_IsScalar, 63 UTT_IsSealed, 64 UTT_IsSigned, 65 UTT_IsStandardLayout, 66 UTT_IsTrivial, 67 UTT_IsTriviallyCopyable, 68 UTT_IsTriviallyDestructible, 69 UTT_IsUnion, 70 UTT_IsUnsigned, 71 UTT_IsVoid, 72 UTT_IsVolatile, 73 UTT_Last = UTT_IsVolatile, 74 BTT_IsBaseOf, 75 BTT_IsConvertible, 76 BTT_IsConvertibleTo, 77 BTT_IsSame, 78 BTT_TypeCompatible, 79 BTT_IsAssignable, 80 BTT_IsNothrowAssignable, 81 BTT_IsTriviallyAssignable, 82 BTT_Last = BTT_IsTriviallyAssignable, 83 TT_IsConstructible, 84 TT_IsNothrowConstructible, 85 TT_IsTriviallyConstructible 86 }; 87 88 /// \brief Names for the array type traits. 89 enum ArrayTypeTrait { 90 ATT_ArrayRank, 91 ATT_ArrayExtent 92 }; 93 94 /// \brief Names for the "expression or type" traits. 95 enum UnaryExprOrTypeTrait { 96 UETT_SizeOf, 97 UETT_AlignOf, 98 UETT_VecStep, 99 UETT_OpenMPRequiredSimdAlign, 100 }; 101 } 102 103 #endif 104