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 //  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