Home | History | Annotate | Download | only in Basic
      1 //===--- TypeTraits.h - C++ Type Traits Support Enumerations ----*- C++ -*-===//
      2 //
      3 //                     The LLVM Compiler Infrastructure
      4 //
      5 // This file is distributed under the University of Illinois Open Source
      6 // License. See LICENSE.TXT for details.
      7 //
      8 //===----------------------------------------------------------------------===//
      9 ///
     10 /// \file
     11 /// \brief Defines enumerations for the type traits support.
     12 ///
     13 //===----------------------------------------------------------------------===//
     14 
     15 #ifndef LLVM_CLANG_BASIC_TYPETRAITS_H
     16 #define LLVM_CLANG_BASIC_TYPETRAITS_H
     17 
     18 namespace clang {
     19 
     20   /// \brief Names for traits that operate specifically on types.
     21   enum TypeTrait {
     22     UTT_HasNothrowAssign,
     23     UTT_HasNothrowMoveAssign,
     24     UTT_HasNothrowCopy,
     25     UTT_HasNothrowConstructor,
     26     UTT_HasTrivialAssign,
     27     UTT_HasTrivialMoveAssign,
     28     UTT_HasTrivialCopy,
     29     UTT_HasTrivialDefaultConstructor,
     30     UTT_HasTrivialMoveConstructor,
     31     UTT_HasTrivialDestructor,
     32     UTT_HasVirtualDestructor,
     33     UTT_IsAbstract,
     34     UTT_IsAggregate,
     35     UTT_IsArithmetic,
     36     UTT_IsArray,
     37     UTT_IsClass,
     38     UTT_IsCompleteType,
     39     UTT_IsCompound,
     40     UTT_IsConst,
     41     UTT_IsDestructible,
     42     UTT_IsEmpty,
     43     UTT_IsEnum,
     44     UTT_IsFinal,
     45     UTT_IsFloatingPoint,
     46     UTT_IsFunction,
     47     UTT_IsFundamental,
     48     UTT_IsIntegral,
     49     UTT_IsInterfaceClass,
     50     UTT_IsLiteral,
     51     UTT_IsLvalueReference,
     52     UTT_IsMemberFunctionPointer,
     53     UTT_IsMemberObjectPointer,
     54     UTT_IsMemberPointer,
     55     UTT_IsNothrowDestructible,
     56     UTT_IsObject,
     57     UTT_IsPOD,
     58     UTT_IsPointer,
     59     UTT_IsPolymorphic,
     60     UTT_IsReference,
     61     UTT_IsRvalueReference,
     62     UTT_IsScalar,
     63     UTT_IsSealed,
     64     UTT_IsSigned,
     65     UTT_IsStandardLayout,
     66     UTT_IsTrivial,
     67     UTT_IsTriviallyCopyable,
     68     UTT_IsTriviallyDestructible,
     69     UTT_IsUnion,
     70     UTT_IsUnsigned,
     71     UTT_IsVoid,
     72     UTT_IsVolatile,
     73     UTT_Last = UTT_IsVolatile,
     74     BTT_IsBaseOf,
     75     BTT_IsConvertible,
     76     BTT_IsConvertibleTo,
     77     BTT_IsSame,
     78     BTT_TypeCompatible,
     79     BTT_IsAssignable,
     80     BTT_IsNothrowAssignable,
     81     BTT_IsTriviallyAssignable,
     82     BTT_Last = BTT_IsTriviallyAssignable,
     83     TT_IsConstructible,
     84     TT_IsNothrowConstructible,
     85     TT_IsTriviallyConstructible
     86   };
     87 
     88   /// \brief Names for the array type traits.
     89   enum ArrayTypeTrait {
     90     ATT_ArrayRank,
     91     ATT_ArrayExtent
     92   };
     93 
     94   /// \brief Names for the "expression or type" traits.
     95   enum UnaryExprOrTypeTrait {
     96     UETT_SizeOf,
     97     UETT_AlignOf,
     98     UETT_VecStep,
     99     UETT_OpenMPRequiredSimdAlign,
    100   };
    101 }
    102 
    103 #endif
    104