]> CyberLeo.Net >> Repos - FreeBSD/releng/9.2.git/blob - contrib/llvm/tools/clang/include/clang/Basic/TypeTraits.h
- Copy stable/9 to releng/9.2 as part of the 9.2-RELEASE cycle.
[FreeBSD/releng/9.2.git] / contrib / llvm / tools / clang / include / clang / Basic / TypeTraits.h
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_TYPETRAITS_H
16 #define LLVM_CLANG_TYPETRAITS_H
17
18 namespace clang {
19
20   /// \brief Names for the unary type traits.
21   enum UnaryTypeTrait {
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_IsArithmetic,
35     UTT_IsArray,
36     UTT_IsClass,
37     UTT_IsCompleteType,
38     UTT_IsCompound,
39     UTT_IsConst,
40     UTT_IsEmpty,
41     UTT_IsEnum,
42     UTT_IsFinal,
43     UTT_IsFloatingPoint,
44     UTT_IsFunction,
45     UTT_IsFundamental,
46     UTT_IsIntegral,
47     UTT_IsInterfaceClass,
48     UTT_IsLiteral,
49     UTT_IsLvalueReference,
50     UTT_IsMemberFunctionPointer,
51     UTT_IsMemberObjectPointer,
52     UTT_IsMemberPointer,
53     UTT_IsObject,
54     UTT_IsPOD,
55     UTT_IsPointer,
56     UTT_IsPolymorphic,
57     UTT_IsReference,
58     UTT_IsRvalueReference,
59     UTT_IsScalar,
60     UTT_IsSigned,
61     UTT_IsStandardLayout,
62     UTT_IsTrivial,
63     UTT_IsTriviallyCopyable,
64     UTT_IsUnion,
65     UTT_IsUnsigned,
66     UTT_IsVoid,
67     UTT_IsVolatile
68   };
69
70   /// \brief Names for the binary type traits.
71   enum BinaryTypeTrait {
72     BTT_IsBaseOf,
73     BTT_IsConvertible,
74     BTT_IsConvertibleTo,
75     BTT_IsSame,
76     BTT_TypeCompatible,
77     BTT_IsTriviallyAssignable
78   };
79
80   /// \brief Names for the array type traits.
81   enum ArrayTypeTrait {
82     ATT_ArrayRank,
83     ATT_ArrayExtent
84   };
85
86   /// \brief Names for the "expression or type" traits.
87   enum UnaryExprOrTypeTrait {
88     UETT_SizeOf,
89     UETT_AlignOf,
90     UETT_VecStep
91   };
92   
93   /// \brief Names for type traits that operate specifically on types.
94   enum TypeTrait {
95     TT_IsTriviallyConstructible
96   };
97   
98 }
99
100 #endif