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 // This file defines enumerations for the type traits support. 00011 // 00012 //===----------------------------------------------------------------------===// 00013 00014 #ifndef LLVM_CLANG_TYPETRAITS_H 00015 #define LLVM_CLANG_TYPETRAITS_H 00016 00017 namespace clang { 00018 00019 /// UnaryTypeTrait - Names for the unary type traits. 00020 enum UnaryTypeTrait { 00021 UTT_HasNothrowAssign, 00022 UTT_HasNothrowCopy, 00023 UTT_HasNothrowConstructor, 00024 UTT_HasTrivialAssign, 00025 UTT_HasTrivialCopy, 00026 UTT_HasTrivialDefaultConstructor, 00027 UTT_HasTrivialDestructor, 00028 UTT_HasVirtualDestructor, 00029 UTT_IsAbstract, 00030 UTT_IsArithmetic, 00031 UTT_IsArray, 00032 UTT_IsClass, 00033 UTT_IsCompleteType, 00034 UTT_IsCompound, 00035 UTT_IsConst, 00036 UTT_IsEmpty, 00037 UTT_IsEnum, 00038 UTT_IsFinal, 00039 UTT_IsFloatingPoint, 00040 UTT_IsFunction, 00041 UTT_IsFundamental, 00042 UTT_IsIntegral, 00043 UTT_IsLiteral, 00044 UTT_IsLvalueReference, 00045 UTT_IsMemberFunctionPointer, 00046 UTT_IsMemberObjectPointer, 00047 UTT_IsMemberPointer, 00048 UTT_IsObject, 00049 UTT_IsPOD, 00050 UTT_IsPointer, 00051 UTT_IsPolymorphic, 00052 UTT_IsReference, 00053 UTT_IsRvalueReference, 00054 UTT_IsScalar, 00055 UTT_IsSigned, 00056 UTT_IsStandardLayout, 00057 UTT_IsTrivial, 00058 UTT_IsTriviallyCopyable, 00059 UTT_IsUnion, 00060 UTT_IsUnsigned, 00061 UTT_IsVoid, 00062 UTT_IsVolatile 00063 }; 00064 00065 /// BinaryTypeTrait - Names for the binary type traits. 00066 enum BinaryTypeTrait { 00067 BTT_IsBaseOf, 00068 BTT_IsConvertible, 00069 BTT_IsConvertibleTo, 00070 BTT_IsSame, 00071 BTT_TypeCompatible, 00072 BTT_IsTriviallyAssignable 00073 }; 00074 00075 /// ArrayTypeTrait - Names for the array type traits. 00076 enum ArrayTypeTrait { 00077 ATT_ArrayRank, 00078 ATT_ArrayExtent 00079 }; 00080 00081 /// UnaryExprOrTypeTrait - Names for the "expression or type" traits. 00082 enum UnaryExprOrTypeTrait { 00083 UETT_SizeOf, 00084 UETT_AlignOf, 00085 UETT_VecStep 00086 }; 00087 00088 /// \brief Names for type traits that operate specifically on types. 00089 enum TypeTrait { 00090 TT_IsTriviallyConstructible 00091 }; 00092 00093 } 00094 00095 #endif