]> CyberLeo.Net >> Repos - FreeBSD/stable/9.git/blob - contrib/llvm/tools/clang/include/clang/AST/BuiltinTypes.def
MFC r244628:
[FreeBSD/stable/9.git] / contrib / llvm / tools / clang / include / clang / AST / BuiltinTypes.def
1 //===-- BuiltinTypeNodes.def - Metadata about BuiltinTypes ------*- 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 the database about various builtin singleton types.
11 //
12 //  BuiltinType::Id is the enumerator defining the type.
13 //
14 //  Context.SingletonId is the global singleton of this type.  Some global
15 //  singletons are shared by multiple types.
16 //
17 //    BUILTIN_TYPE(Id, SingletonId) - A builtin type that has not been
18 //    covered by any other #define.  Defining this macro covers all
19 //    the builtins.
20 //
21 //    SIGNED_TYPE(Id, SingletonId) - A signed integral type.
22 //
23 //    UNSIGNED_TYPE(Id, SingletonId) - An unsigned integral type.
24 //
25 //    FLOATING_TYPE(Id, SingletonId) - A floating-point type.
26 //
27 //    PLACEHOLDER_TYPE(Id, SingletonId) - A placeholder type.  Placeholder
28 //    types are used to perform context-sensitive checking of specific
29 //    forms of expression.
30 //
31 //    SHARED_SINGLETON_TYPE(Expansion) - The given expansion corresponds
32 //    to a builtin which uses a shared singleton type.
33 //
34 //===----------------------------------------------------------------------===//
35
36 #ifndef SIGNED_TYPE
37 #define SIGNED_TYPE(Id, SingletonId) BUILTIN_TYPE(Id, SingletonId)
38 #endif
39
40 #ifndef UNSIGNED_TYPE
41 #define UNSIGNED_TYPE(Id, SingletonId) BUILTIN_TYPE(Id, SingletonId)
42 #endif
43
44 #ifndef FLOATING_TYPE
45 #define FLOATING_TYPE(Id, SingletonId) BUILTIN_TYPE(Id, SingletonId)
46 #endif
47
48 #ifndef PLACEHOLDER_TYPE
49 #define PLACEHOLDER_TYPE(Id, SingletonId) BUILTIN_TYPE(Id, SingletonId)
50 #endif
51
52 #ifndef SHARED_SINGLETON_TYPE
53 #define SHARED_SINGLETON_TYPE(Expansion) Expansion
54 #endif
55
56 //===- Builtin Types ------------------------------------------------------===//
57
58 // void
59 BUILTIN_TYPE(Void, VoidTy)
60
61 //===- Unsigned Types -----------------------------------------------------===//
62
63 // 'bool' in C++, '_Bool' in C99
64 UNSIGNED_TYPE(Bool, BoolTy)
65
66 // 'char' for targets where it's unsigned
67 SHARED_SINGLETON_TYPE(UNSIGNED_TYPE(Char_U, CharTy))
68
69 // 'unsigned char', explicitly qualified
70 UNSIGNED_TYPE(UChar, UnsignedCharTy)
71
72 // 'wchar_t' for targets where it's unsigned
73 SHARED_SINGLETON_TYPE(UNSIGNED_TYPE(WChar_U, WCharTy))
74
75 // 'char16_t' in C++
76 UNSIGNED_TYPE(Char16, Char16Ty)
77
78 // 'char32_t' in C++
79 UNSIGNED_TYPE(Char32, Char32Ty)
80
81 // 'unsigned short'
82 UNSIGNED_TYPE(UShort, UnsignedShortTy)
83
84 // 'unsigned int'
85 UNSIGNED_TYPE(UInt, UnsignedIntTy)
86
87 // 'unsigned long'
88 UNSIGNED_TYPE(ULong, UnsignedLongTy)
89
90 // 'unsigned long long'
91 UNSIGNED_TYPE(ULongLong, UnsignedLongLongTy)
92
93 // '__uint128_t'
94 UNSIGNED_TYPE(UInt128, UnsignedInt128Ty)
95
96 //===- Signed Types -------------------------------------------------------===//
97
98 // 'char' for targets where it's signed
99 SHARED_SINGLETON_TYPE(SIGNED_TYPE(Char_S, CharTy))
100
101 // 'signed char', explicitly qualified
102 SIGNED_TYPE(SChar, SignedCharTy)
103
104 // 'wchar_t' for targets where it's signed
105 SHARED_SINGLETON_TYPE(SIGNED_TYPE(WChar_S, WCharTy))
106
107 // 'short' or 'signed short'
108 SIGNED_TYPE(Short, ShortTy)
109
110 // 'int' or 'signed int'
111 SIGNED_TYPE(Int, IntTy)
112
113 // 'long' or 'signed long'
114 SIGNED_TYPE(Long, LongTy)
115
116 // 'long long' or 'signed long long'
117 SIGNED_TYPE(LongLong, LongLongTy)
118
119 // '__int128_t'
120 SIGNED_TYPE(Int128, Int128Ty)
121
122 //===- Floating point types -----------------------------------------------===//
123
124 // 'half' in OpenCL, '__fp16' in ARM NEON.
125 FLOATING_TYPE(Half, HalfTy)
126
127 // 'float'
128 FLOATING_TYPE(Float, FloatTy)
129
130 // 'double'
131 FLOATING_TYPE(Double, DoubleTy)
132
133 // 'long double'
134 FLOATING_TYPE(LongDouble, LongDoubleTy)
135
136 //===- Language-specific types --------------------------------------------===//
137
138 // This is the type of C++0x 'nullptr'.
139 BUILTIN_TYPE(NullPtr, NullPtrTy)
140
141 // The primitive Objective C 'id' type.  The user-visible 'id'
142 // type is a typedef of an ObjCObjectPointerType to an
143 // ObjCObjectType with this as its base.  In fact, this only ever
144 // shows up in an AST as the base type of an ObjCObjectType.
145 BUILTIN_TYPE(ObjCId, ObjCBuiltinIdTy)
146
147 // The primitive Objective C 'Class' type.  The user-visible
148 // 'Class' type is a typedef of an ObjCObjectPointerType to an
149 // ObjCObjectType with this as its base.  In fact, this only ever
150 // shows up in an AST as the base type of an ObjCObjectType.
151 BUILTIN_TYPE(ObjCClass, ObjCBuiltinClassTy)
152
153 // The primitive Objective C 'SEL' type.  The user-visible 'SEL'
154 // type is a typedef of a PointerType to this.
155 BUILTIN_TYPE(ObjCSel, ObjCBuiltinSelTy)
156
157 // This represents the type of an expression whose type is
158 // totally unknown, e.g. 'T::foo'.  It is permitted for this to
159 // appear in situations where the structure of the type is
160 // theoretically deducible.
161 BUILTIN_TYPE(Dependent, DependentTy)
162
163 // The type of an unresolved overload set.  A placeholder type.
164 // Expressions with this type have one of the following basic
165 // forms, with parentheses generally permitted:
166 //   foo          # possibly qualified, not if an implicit access
167 //   foo          # possibly qualified, not if an implicit access
168 //   &foo         # possibly qualified, not if an implicit access
169 //   x->foo       # only if might be a static member function
170 //   &x->foo      # only if might be a static member function
171 //   &Class::foo  # when a pointer-to-member; sub-expr also has this type
172 // OverloadExpr::find can be used to analyze the expression.
173 //
174 // Overload should be the first placeholder type, or else change
175 // BuiltinType::isNonOverloadPlaceholderType()
176 PLACEHOLDER_TYPE(Overload, OverloadTy)
177
178 // The type of a bound C++ non-static member function.
179 // A placeholder type.  Expressions with this type have one of the
180 // following basic forms:
181 //   foo          # if an implicit access
182 //   x->foo       # if only contains non-static members
183 PLACEHOLDER_TYPE(BoundMember, BoundMemberTy)
184
185 // The type of an expression which refers to a pseudo-object,
186 // such as those introduced by Objective C's @property or
187 // VS.NET's __property declarations.  A placeholder type.  The
188 // pseudo-object is actually accessed by emitting a call to
189 // some sort of function or method;  typically there is a pair
190 // of a setter and a getter, with the setter used if the
191 // pseudo-object reference is used syntactically as the
192 // left-hand-side of an assignment operator.
193 //
194 // A pseudo-object reference naming an Objective-C @property is
195 // always a dot access with a base of object-pointer type,
196 // e.g. 'x.foo'.
197 //
198 // In VS.NET, a __property declaration creates an implicit
199 // member with an associated name, which can then be named
200 // in any of the normal ways an ordinary member could be.
201 PLACEHOLDER_TYPE(PseudoObject, PseudoObjectTy)
202
203 // __builtin_any_type.  A placeholder type.  Useful for clients
204 // like debuggers that don't know what type to give something.
205 // Only a small number of operations are valid on expressions of
206 // unknown type, most notably explicit casts.
207 PLACEHOLDER_TYPE(UnknownAny, UnknownAnyTy)
208
209 PLACEHOLDER_TYPE(BuiltinFn, BuiltinFnTy)
210
211 // The type of a cast which, in ARC, would normally require a
212 // __bridge, but which might be okay depending on the immediate
213 // context.
214 PLACEHOLDER_TYPE(ARCUnbridgedCast, ARCUnbridgedCastTy)
215
216 #ifdef LAST_BUILTIN_TYPE
217 LAST_BUILTIN_TYPE(ARCUnbridgedCast)
218 #undef LAST_BUILTIN_TYPE
219 #endif
220
221 #undef SHARED_SINGLETON_TYPE
222 #undef PLACEHOLDER_TYPE
223 #undef FLOATING_TYPE
224 #undef SIGNED_TYPE
225 #undef UNSIGNED_TYPE
226 #undef BUILTIN_TYPE