• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /macosx-10.10/llvmCore-3425.0.34/include/llvm/

Lines Matching defs:TypeBuilder

1 //===---- llvm/TypeBuilder.h - Builder for LLVM types -----------*- C++ -*-===//
10 // This file defines the TypeBuilder class, which is used as a convenient way to
24 /// TypeBuilder - This provides a uniform API for looking up types
27 /// ieee_float, ppc_fp128, etc. TypeBuilder<T, false> allows T to be
30 /// these. TypeBuilder<T, true> removes native C types from this set
45 /// Function::Create(TypeBuilder<types::i<8>(MyType*), true>::get(), ...)
47 /// complain that TypeBuilder<MyType, true>::get() doesn't exist. To fix this,
51 /// template<bool xcompile> class TypeBuilder<MyType, xcompile> {
57 /// TypeBuilder<types::i<32>, xcompile>::get(Context),
58 /// TypeBuilder<types::i<32>*, xcompile>::get(Context),
59 /// TypeBuilder<types::i<8>*[], xcompile>::get(Context),
65 /// // the operation of TypeBuilder.
74 /// TypeBuilder cannot handle recursive types or types you only know at runtime.
77 template<typename T, bool cross_compilable> class TypeBuilder {};
96 template<typename T, bool cross> class TypeBuilder<const T, cross>
97 : public TypeBuilder<T, cross> {};
98 template<typename T, bool cross> class TypeBuilder<volatile T, cross>
99 : public TypeBuilder<T, cross> {};
100 template<typename T, bool cross> class TypeBuilder<const volatile T, cross>
101 : public TypeBuilder<T, cross> {};
104 template<typename T, bool cross> class TypeBuilder<T*, cross> {
107 return PointerType::getUnqual(TypeBuilder<T,cross>::get(Context));
112 template<typename T, bool cross> class TypeBuilder<T&, cross> {};
115 template<typename T, size_t N, bool cross> class TypeBuilder<T[N], cross> {
118 return ArrayType::get(TypeBuilder<T, cross>::get(Context), N);
122 template<typename T, bool cross> class TypeBuilder<T[], cross> {
125 return ArrayType::get(TypeBuilder<T, cross>::get(Context), 0);
129 // Define the C integral types only for TypeBuilder<T, false>.
141 // If we defined TypeBuilder<int32_t> and TypeBuilder<int64_t>, then any use of
142 // TypeBuilder<size_t> would fail. We couldn't define TypeBuilder<size_t> in
152 template<> class TypeBuilder<T, false> { \
158 template<> class TypeBuilder<T, true> { \
181 class TypeBuilder<types::i<num_bits>, cross> {
188 template<> class TypeBuilder<float, false> {
194 template<> class TypeBuilder<float, true> {};
196 template<> class TypeBuilder<double, false> {
202 template<> class TypeBuilder<double, true> {};
204 template<bool cross> class TypeBuilder<types::ieee_float, cross> {
208 template<bool cross> class TypeBuilder<types::ieee_double, cross> {
212 template<bool cross> class TypeBuilder<types::x86_fp80, cross> {
216 template<bool cross> class TypeBuilder<types::fp128, cross> {
220 template<bool cross> class TypeBuilder<types::ppc_fp128, cross> {
224 template<bool cross> class TypeBuilder<types::x86_mmx, cross> {
229 template<bool cross> class TypeBuilder<void, cross> {
238 template<> class TypeBuilder<void*, false>
239 : public TypeBuilder<types::i<8>*, false> {};
240 template<> class TypeBuilder<const void*, false>
241 : public TypeBuilder<types::i<8>*, false> {};
242 template<> class TypeBuilder<volatile void*, false>
243 : public TypeBuilder<types::i<8>*, false> {};
244 template<> class TypeBuilder<const volatile void*, false>
245 : public TypeBuilder<types::i<8>*, false> {};
247 template<typename R, bool cross> class TypeBuilder<R(), cross> {
250 return FunctionType::get(TypeBuilder<R, cross>::get(Context), false);
253 template<typename R, typename A1, bool cross> class TypeBuilder<R(A1), cross> {
257 TypeBuilder<A1, cross>::get(Context),
259 return FunctionType::get(TypeBuilder<R, cross>::get(Context),
264 class TypeBuilder<R(A1, A2), cross> {
268 TypeBuilder<A1, cross>::get(Context),
269 TypeBuilder<A2, cross>::get(Context),
271 return FunctionType::get(TypeBuilder<R, cross>::get(Context),
276 class TypeBuilder<R(A1, A2, A3), cross> {
280 TypeBuilder<A1, cross>::get(Context),
281 TypeBuilder<A2, cross>::get(Context),
282 TypeBuilder<A3, cross>::get(Context),
284 return FunctionType::get(TypeBuilder<R, cross>::get(Context),
291 class TypeBuilder<R(A1, A2, A3, A4), cross> {
295 TypeBuilder<A1, cross>::get(Context),
296 TypeBuilder<A2, cross>::get(Context),
297 TypeBuilder<A3, cross>::get(Context),
298 TypeBuilder<A4, cross>::get(Context),
300 return FunctionType::get(TypeBuilder<R, cross>::get(Context),
307 class TypeBuilder<R(A1, A2, A3, A4, A5), cross> {
311 TypeBuilder<A1, cross>::get(Context),
312 TypeBuilder<A2, cross>::get(Context),
313 TypeBuilder<A3, cross>::get(Context),
314 TypeBuilder<A4, cross>::get(Context),
315 TypeBuilder<A5, cross>::get(Context),
317 return FunctionType::get(TypeBuilder<R, cross>::get(Context),
322 template<typename R, bool cross> class TypeBuilder<R(...), cross> {
325 return FunctionType::get(TypeBuilder<R, cross>::get(Context), true);
329 class TypeBuilder<R(A1, ...), cross> {
333 TypeBuilder<A1, cross>::get(Context),
335 return FunctionType::get(TypeBuilder<R, cross>::get(Context), params, true);
339 class TypeBuilder<R(A1, A2, ...), cross> {
343 TypeBuilder<A1, cross>::get(Context),
344 TypeBuilder<A2, cross>::get(Context),
346 return FunctionType::get(TypeBuilder<R, cross>::get(Context),
351 class TypeBuilder<R(A1, A2, A3, ...), cross> {
355 TypeBuilder<A1, cross>::get(Context),
356 TypeBuilder<A2, cross>::get(Context),
357 TypeBuilder<A3, cross>::get(Context),
359 return FunctionType::get(TypeBuilder<R, cross>::get(Context),
366 class TypeBuilder<R(A1, A2, A3, A4, ...), cross> {
370 TypeBuilder<A1, cross>::get(Context),
371 TypeBuilder<A2, cross>::get(Context),
372 TypeBuilder<A3, cross>::get(Context),
373 TypeBuilder<A4, cross>::get(Context),
375 return FunctionType::get(TypeBuilder<R, cross>::get(Context),
382 class TypeBuilder<R(A1, A2, A3, A4, A5, ...), cross> {
386 TypeBuilder<A1, cross>::get(Context),
387 TypeBuilder<A2, cross>::get(Context),
388 TypeBuilder<A3, cross>::get(Context),
389 TypeBuilder<A4, cross>::get(Context),
390 TypeBuilder<A5, cross>::get(Context),
392 return FunctionType::get(TypeBuilder<R, cross>::get(Context),