]> CyberLeo.Net >> Repos - FreeBSD/releng/9.0.git/blob - contrib/llvm/tools/clang/include/clang/Basic/TypeTraits.h
Copy stable/9 to releng/9.0 as part of the FreeBSD 9.0-RELEASE release
[FreeBSD/releng/9.0.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 //  This file defines enumerations for the type traits support.
11 //
12 //===----------------------------------------------------------------------===//
13
14 #ifndef LLVM_CLANG_TYPETRAITS_H
15 #define LLVM_CLANG_TYPETRAITS_H
16
17 namespace clang {
18
19   /// UnaryTypeTrait - Names for the unary type traits.
20   enum UnaryTypeTrait {
21     UTT_HasNothrowAssign,
22     UTT_HasNothrowCopy,
23     UTT_HasNothrowConstructor,
24     UTT_HasTrivialAssign,
25     UTT_HasTrivialCopy,
26     UTT_HasTrivialDefaultConstructor,
27     UTT_HasTrivialDestructor,
28     UTT_HasVirtualDestructor,
29     UTT_IsAbstract,
30     UTT_IsArithmetic,
31     UTT_IsArray,
32     UTT_IsClass,
33     UTT_IsCompleteType,
34     UTT_IsCompound,
35     UTT_IsConst,
36     UTT_IsEmpty,
37     UTT_IsEnum,
38     UTT_IsFloatingPoint,
39     UTT_IsFunction,
40     UTT_IsFundamental,
41     UTT_IsIntegral,
42     UTT_IsLiteral,
43     UTT_IsLvalueReference,
44     UTT_IsMemberFunctionPointer,
45     UTT_IsMemberObjectPointer,
46     UTT_IsMemberPointer,
47     UTT_IsObject,
48     UTT_IsPOD,
49     UTT_IsPointer,
50     UTT_IsPolymorphic,
51     UTT_IsReference,
52     UTT_IsRvalueReference,
53     UTT_IsScalar,
54     UTT_IsSigned,
55     UTT_IsStandardLayout,
56     UTT_IsTrivial,
57     UTT_IsTriviallyCopyable,
58     UTT_IsUnion,
59     UTT_IsUnsigned,
60     UTT_IsVoid,
61     UTT_IsVolatile
62   };
63
64   /// BinaryTypeTrait - Names for the binary type traits.
65   enum BinaryTypeTrait {
66     BTT_IsBaseOf,
67     BTT_IsConvertible,
68     BTT_IsConvertibleTo,
69     BTT_IsSame,
70     BTT_TypeCompatible
71   };
72
73   /// ArrayTypeTrait - Names for the array type traits.
74   enum ArrayTypeTrait {
75     ATT_ArrayRank,
76     ATT_ArrayExtent
77   };
78
79   /// UnaryExprOrTypeTrait - Names for the "expression or type" traits.
80   enum UnaryExprOrTypeTrait {
81     UETT_SizeOf,
82     UETT_AlignOf,
83     UETT_VecStep
84   };
85 }
86
87 #endif