164b45f7e0d3167f040841ac2920aead7f080730dSebastian Redl//===--- TypeTraits.h - C++ Type Traits Support Enumerations ----*- C++ -*-===// 264b45f7e0d3167f040841ac2920aead7f080730dSebastian Redl// 364b45f7e0d3167f040841ac2920aead7f080730dSebastian Redl// The LLVM Compiler Infrastructure 464b45f7e0d3167f040841ac2920aead7f080730dSebastian Redl// 564b45f7e0d3167f040841ac2920aead7f080730dSebastian Redl// This file is distributed under the University of Illinois Open Source 664b45f7e0d3167f040841ac2920aead7f080730dSebastian Redl// License. See LICENSE.TXT for details. 764b45f7e0d3167f040841ac2920aead7f080730dSebastian Redl// 864b45f7e0d3167f040841ac2920aead7f080730dSebastian Redl//===----------------------------------------------------------------------===// 92f7f5b1f5ff023cb8c4008ae53a12b09e3ea2622James Dennett/// 102f7f5b1f5ff023cb8c4008ae53a12b09e3ea2622James Dennett/// \file 112f7f5b1f5ff023cb8c4008ae53a12b09e3ea2622James Dennett/// \brief Defines enumerations for the type traits support. 122f7f5b1f5ff023cb8c4008ae53a12b09e3ea2622James Dennett/// 1364b45f7e0d3167f040841ac2920aead7f080730dSebastian Redl//===----------------------------------------------------------------------===// 1464b45f7e0d3167f040841ac2920aead7f080730dSebastian Redl 15176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#ifndef LLVM_CLANG_BASIC_TYPETRAITS_H 16176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#define LLVM_CLANG_BASIC_TYPETRAITS_H 1764b45f7e0d3167f040841ac2920aead7f080730dSebastian Redl 1864b45f7e0d3167f040841ac2920aead7f080730dSebastian Redlnamespace clang { 1964b45f7e0d3167f040841ac2920aead7f080730dSebastian Redl 20651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines /// \brief Names for traits that operate specifically on types. 21651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines enum TypeTrait { 2264b45f7e0d3167f040841ac2920aead7f080730dSebastian Redl UTT_HasNothrowAssign, 239ef9875bbe19dc9f73c6c95b803d9a4945168690Joao Matos UTT_HasNothrowMoveAssign, 2464b45f7e0d3167f040841ac2920aead7f080730dSebastian Redl UTT_HasNothrowCopy, 2564b45f7e0d3167f040841ac2920aead7f080730dSebastian Redl UTT_HasNothrowConstructor, 2664b45f7e0d3167f040841ac2920aead7f080730dSebastian Redl UTT_HasTrivialAssign, 279ef9875bbe19dc9f73c6c95b803d9a4945168690Joao Matos UTT_HasTrivialMoveAssign, 2864b45f7e0d3167f040841ac2920aead7f080730dSebastian Redl UTT_HasTrivialCopy, 29023df37c27ee8035664fb62f206ca58f4e2a169dSean Hunt UTT_HasTrivialDefaultConstructor, 309ef9875bbe19dc9f73c6c95b803d9a4945168690Joao Matos UTT_HasTrivialMoveConstructor, 3164b45f7e0d3167f040841ac2920aead7f080730dSebastian Redl UTT_HasTrivialDestructor, 3264b45f7e0d3167f040841ac2920aead7f080730dSebastian Redl UTT_HasVirtualDestructor, 3364b45f7e0d3167f040841ac2920aead7f080730dSebastian Redl UTT_IsAbstract, 3420c0da7787c9a7d2529e42a4a91d777778595d74John Wiegley UTT_IsArithmetic, 3520c0da7787c9a7d2529e42a4a91d777778595d74John Wiegley UTT_IsArray, 3664b45f7e0d3167f040841ac2920aead7f080730dSebastian Redl UTT_IsClass, 3720c0da7787c9a7d2529e42a4a91d777778595d74John Wiegley UTT_IsCompleteType, 3820c0da7787c9a7d2529e42a4a91d777778595d74John Wiegley UTT_IsCompound, 3920c0da7787c9a7d2529e42a4a91d777778595d74John Wiegley UTT_IsConst, 40651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines UTT_IsDestructible, 4164b45f7e0d3167f040841ac2920aead7f080730dSebastian Redl UTT_IsEmpty, 4264b45f7e0d3167f040841ac2920aead7f080730dSebastian Redl UTT_IsEnum, 435e9392ba18f5925e26cc5714d1412eda0d219826Douglas Gregor UTT_IsFinal, 4420c0da7787c9a7d2529e42a4a91d777778595d74John Wiegley UTT_IsFloatingPoint, 4520c0da7787c9a7d2529e42a4a91d777778595d74John Wiegley UTT_IsFunction, 4620c0da7787c9a7d2529e42a4a91d777778595d74John Wiegley UTT_IsFundamental, 4720c0da7787c9a7d2529e42a4a91d777778595d74John Wiegley UTT_IsIntegral, 48ea30e2f8667668173cf7433c3c80cf603bd922a4John McCall UTT_IsInterfaceClass, 494e61ddd644e9c6293697a966d98d7c1905cf63a8Chandler Carruth UTT_IsLiteral, 5020c0da7787c9a7d2529e42a4a91d777778595d74John Wiegley UTT_IsLvalueReference, 5120c0da7787c9a7d2529e42a4a91d777778595d74John Wiegley UTT_IsMemberFunctionPointer, 5220c0da7787c9a7d2529e42a4a91d777778595d74John Wiegley UTT_IsMemberObjectPointer, 5320c0da7787c9a7d2529e42a4a91d777778595d74John Wiegley UTT_IsMemberPointer, 54651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines UTT_IsNothrowDestructible, 5520c0da7787c9a7d2529e42a4a91d777778595d74John Wiegley UTT_IsObject, 5664b45f7e0d3167f040841ac2920aead7f080730dSebastian Redl UTT_IsPOD, 5720c0da7787c9a7d2529e42a4a91d777778595d74John Wiegley UTT_IsPointer, 5864b45f7e0d3167f040841ac2920aead7f080730dSebastian Redl UTT_IsPolymorphic, 5920c0da7787c9a7d2529e42a4a91d777778595d74John Wiegley UTT_IsReference, 6020c0da7787c9a7d2529e42a4a91d777778595d74John Wiegley UTT_IsRvalueReference, 6120c0da7787c9a7d2529e42a4a91d777778595d74John Wiegley UTT_IsScalar, 627121bdb91b86f6053765bda18dd0a8a118929aceDavid Majnemer UTT_IsSealed, 6320c0da7787c9a7d2529e42a4a91d777778595d74John Wiegley UTT_IsSigned, 6420c0da7787c9a7d2529e42a4a91d777778595d74John Wiegley UTT_IsStandardLayout, 65b7e9589bce9852b4db9575f55ac9137572147eb5Chandler Carruth UTT_IsTrivial, 66feb375d31b7e9108b04a9f55b721d5e0c793a558Sean Hunt UTT_IsTriviallyCopyable, 6720c0da7787c9a7d2529e42a4a91d777778595d74John Wiegley UTT_IsUnion, 6820c0da7787c9a7d2529e42a4a91d777778595d74John Wiegley UTT_IsUnsigned, 6920c0da7787c9a7d2529e42a4a91d777778595d74John Wiegley UTT_IsVoid, 70651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines UTT_IsVolatile, 71651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines UTT_Last = UTT_IsVolatile, 72f187237d916afa97c491ac32fe98be7d335c5b63Francois Pichet BTT_IsBaseOf, 7320c0da7787c9a7d2529e42a4a91d777778595d74John Wiegley BTT_IsConvertible, 7420c0da7787c9a7d2529e42a4a91d777778595d74John Wiegley BTT_IsConvertibleTo, 7520c0da7787c9a7d2529e42a4a91d777778595d74John Wiegley BTT_IsSame, 7625d0a0f67d9e949ffbfc57bf487012f5cbfd886eDouglas Gregor BTT_TypeCompatible, 77651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines BTT_IsNothrowAssignable, 78651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines BTT_IsTriviallyAssignable, 79651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines BTT_Last = BTT_IsTriviallyAssignable, 80651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines TT_IsConstructible, 81651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines TT_IsNothrowConstructible, 82651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines TT_IsTriviallyConstructible 836ad6f2848d7652ab2991286eb48be440d3493b28Francois Pichet }; 84f4e3cfbe8abd124be6341ef5d714819b4fbd9082Peter Collingbourne 85af50aab0c317462129d73ae8000c6394c718598dJames Dennett /// \brief Names for the array type traits. 8621ff2e516b0e0bc8c1dbf965cb3d44bac3c64330John Wiegley enum ArrayTypeTrait { 8721ff2e516b0e0bc8c1dbf965cb3d44bac3c64330John Wiegley ATT_ArrayRank, 8821ff2e516b0e0bc8c1dbf965cb3d44bac3c64330John Wiegley ATT_ArrayExtent 8921ff2e516b0e0bc8c1dbf965cb3d44bac3c64330John Wiegley }; 9021ff2e516b0e0bc8c1dbf965cb3d44bac3c64330John Wiegley 91af50aab0c317462129d73ae8000c6394c718598dJames Dennett /// \brief Names for the "expression or type" traits. 92f4e3cfbe8abd124be6341ef5d714819b4fbd9082Peter Collingbourne enum UnaryExprOrTypeTrait { 93f4e3cfbe8abd124be6341ef5d714819b4fbd9082Peter Collingbourne UETT_SizeOf, 94f4e3cfbe8abd124be6341ef5d714819b4fbd9082Peter Collingbourne UETT_AlignOf, 95f4e3cfbe8abd124be6341ef5d714819b4fbd9082Peter Collingbourne UETT_VecStep 96f4e3cfbe8abd124be6341ef5d714819b4fbd9082Peter Collingbourne }; 9764b45f7e0d3167f040841ac2920aead7f080730dSebastian Redl} 9864b45f7e0d3167f040841ac2920aead7f080730dSebastian Redl 9964b45f7e0d3167f040841ac2920aead7f080730dSebastian Redl#endif 100