clang API Documentation
00001 //===--- TypeTraits.h - C++ Type Traits Support Enumerations ----*- C++ -*-===// 00002 // 00003 // The LLVM Compiler Infrastructure 00004 // 00005 // This file is distributed under the University of Illinois Open Source 00006 // License. See LICENSE.TXT for details. 00007 // 00008 //===----------------------------------------------------------------------===// 00009 /// 00010 /// \file 00011 /// \brief Defines enumerations for the type traits support. 00012 /// 00013 //===----------------------------------------------------------------------===// 00014 00015 #ifndef LLVM_CLANG_BASIC_TYPETRAITS_H 00016 #define LLVM_CLANG_BASIC_TYPETRAITS_H 00017 00018 namespace clang { 00019 00020 /// \brief Names for traits that operate specifically on types. 00021 enum TypeTrait { 00022 UTT_HasNothrowAssign, 00023 UTT_HasNothrowMoveAssign, 00024 UTT_HasNothrowCopy, 00025 UTT_HasNothrowConstructor, 00026 UTT_HasTrivialAssign, 00027 UTT_HasTrivialMoveAssign, 00028 UTT_HasTrivialCopy, 00029 UTT_HasTrivialDefaultConstructor, 00030 UTT_HasTrivialMoveConstructor, 00031 UTT_HasTrivialDestructor, 00032 UTT_HasVirtualDestructor, 00033 UTT_IsAbstract, 00034 UTT_IsArithmetic, 00035 UTT_IsArray, 00036 UTT_IsClass, 00037 UTT_IsCompleteType, 00038 UTT_IsCompound, 00039 UTT_IsConst, 00040 UTT_IsDestructible, 00041 UTT_IsEmpty, 00042 UTT_IsEnum, 00043 UTT_IsFinal, 00044 UTT_IsFloatingPoint, 00045 UTT_IsFunction, 00046 UTT_IsFundamental, 00047 UTT_IsIntegral, 00048 UTT_IsInterfaceClass, 00049 UTT_IsLiteral, 00050 UTT_IsLvalueReference, 00051 UTT_IsMemberFunctionPointer, 00052 UTT_IsMemberObjectPointer, 00053 UTT_IsMemberPointer, 00054 UTT_IsNothrowDestructible, 00055 UTT_IsObject, 00056 UTT_IsPOD, 00057 UTT_IsPointer, 00058 UTT_IsPolymorphic, 00059 UTT_IsReference, 00060 UTT_IsRvalueReference, 00061 UTT_IsScalar, 00062 UTT_IsSealed, 00063 UTT_IsSigned, 00064 UTT_IsStandardLayout, 00065 UTT_IsTrivial, 00066 UTT_IsTriviallyCopyable, 00067 UTT_IsUnion, 00068 UTT_IsUnsigned, 00069 UTT_IsVoid, 00070 UTT_IsVolatile, 00071 UTT_Last = UTT_IsVolatile, 00072 BTT_IsBaseOf, 00073 BTT_IsConvertible, 00074 BTT_IsConvertibleTo, 00075 BTT_IsSame, 00076 BTT_TypeCompatible, 00077 BTT_IsNothrowAssignable, 00078 BTT_IsTriviallyAssignable, 00079 BTT_Last = BTT_IsTriviallyAssignable, 00080 TT_IsConstructible, 00081 TT_IsNothrowConstructible, 00082 TT_IsTriviallyConstructible 00083 }; 00084 00085 /// \brief Names for the array type traits. 00086 enum ArrayTypeTrait { 00087 ATT_ArrayRank, 00088 ATT_ArrayExtent 00089 }; 00090 00091 /// \brief Names for the "expression or type" traits. 00092 enum UnaryExprOrTypeTrait { 00093 UETT_SizeOf, 00094 UETT_AlignOf, 00095 UETT_VecStep 00096 }; 00097 } 00098 00099 #endif