1193326Sed//===--- TypeTraits.h - C++ Type Traits Support Enumerations ----*- C++ -*-===// 2193326Sed// 3193326Sed// The LLVM Compiler Infrastructure 4193326Sed// 5193326Sed// This file is distributed under the University of Illinois Open Source 6193326Sed// License. See LICENSE.TXT for details. 7193326Sed// 8193326Sed//===----------------------------------------------------------------------===// 9239462Sdim/// 10239462Sdim/// \file 11239462Sdim/// \brief Defines enumerations for the type traits support. 12239462Sdim/// 13193326Sed//===----------------------------------------------------------------------===// 14193326Sed 15193326Sed#ifndef LLVM_CLANG_TYPETRAITS_H 16193326Sed#define LLVM_CLANG_TYPETRAITS_H 17193326Sed 18193326Sednamespace clang { 19193326Sed 20239462Sdim /// \brief Names for the unary type traits. 21193326Sed enum UnaryTypeTrait { 22193326Sed UTT_HasNothrowAssign, 23249423Sdim UTT_HasNothrowMoveAssign, 24193326Sed UTT_HasNothrowCopy, 25193326Sed UTT_HasNothrowConstructor, 26193326Sed UTT_HasTrivialAssign, 27249423Sdim UTT_HasTrivialMoveAssign, 28193326Sed UTT_HasTrivialCopy, 29223017Sdim UTT_HasTrivialDefaultConstructor, 30249423Sdim UTT_HasTrivialMoveConstructor, 31193326Sed UTT_HasTrivialDestructor, 32193326Sed UTT_HasVirtualDestructor, 33193326Sed UTT_IsAbstract, 34221345Sdim UTT_IsArithmetic, 35221345Sdim UTT_IsArray, 36193326Sed UTT_IsClass, 37221345Sdim UTT_IsCompleteType, 38221345Sdim UTT_IsCompound, 39221345Sdim UTT_IsConst, 40193326Sed UTT_IsEmpty, 41193326Sed UTT_IsEnum, 42234353Sdim UTT_IsFinal, 43221345Sdim UTT_IsFloatingPoint, 44221345Sdim UTT_IsFunction, 45221345Sdim UTT_IsFundamental, 46221345Sdim UTT_IsIntegral, 47243830Sdim UTT_IsInterfaceClass, 48221345Sdim UTT_IsLiteral, 49221345Sdim UTT_IsLvalueReference, 50221345Sdim UTT_IsMemberFunctionPointer, 51221345Sdim UTT_IsMemberObjectPointer, 52221345Sdim UTT_IsMemberPointer, 53221345Sdim UTT_IsObject, 54193326Sed UTT_IsPOD, 55221345Sdim UTT_IsPointer, 56193326Sed UTT_IsPolymorphic, 57221345Sdim UTT_IsReference, 58221345Sdim UTT_IsRvalueReference, 59221345Sdim UTT_IsScalar, 60263508Sdim UTT_IsSealed, 61221345Sdim UTT_IsSigned, 62221345Sdim UTT_IsStandardLayout, 63221345Sdim UTT_IsTrivial, 64223017Sdim UTT_IsTriviallyCopyable, 65200583Srdivacky UTT_IsUnion, 66221345Sdim UTT_IsUnsigned, 67221345Sdim UTT_IsVoid, 68221345Sdim UTT_IsVolatile 69193326Sed }; 70193326Sed 71239462Sdim /// \brief Names for the binary type traits. 72218893Sdim enum BinaryTypeTrait { 73218893Sdim BTT_IsBaseOf, 74221345Sdim BTT_IsConvertible, 75221345Sdim BTT_IsConvertibleTo, 76221345Sdim BTT_IsSame, 77234353Sdim BTT_TypeCompatible, 78234353Sdim BTT_IsTriviallyAssignable 79218893Sdim }; 80221345Sdim 81239462Sdim /// \brief Names for the array type traits. 82221345Sdim enum ArrayTypeTrait { 83221345Sdim ATT_ArrayRank, 84221345Sdim ATT_ArrayExtent 85221345Sdim }; 86221345Sdim 87239462Sdim /// \brief Names for the "expression or type" traits. 88221345Sdim enum UnaryExprOrTypeTrait { 89221345Sdim UETT_SizeOf, 90221345Sdim UETT_AlignOf, 91221345Sdim UETT_VecStep 92221345Sdim }; 93234353Sdim 94234353Sdim /// \brief Names for type traits that operate specifically on types. 95234353Sdim enum TypeTrait { 96234353Sdim TT_IsTriviallyConstructible 97234353Sdim }; 98234353Sdim 99193326Sed} 100193326Sed 101193326Sed#endif 102