clang API Documentation

TypeTraits.h
Go to the documentation of this file.
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