19594675cc1eb52a054de13c4a21e466643847480Chris Lattner//===--- LLVM.h - Import various common LLVM datatypes ----------*- C++ -*-===//
29594675cc1eb52a054de13c4a21e466643847480Chris Lattner//
39594675cc1eb52a054de13c4a21e466643847480Chris Lattner//                     The LLVM Compiler Infrastructure
49594675cc1eb52a054de13c4a21e466643847480Chris Lattner//
59594675cc1eb52a054de13c4a21e466643847480Chris Lattner// This file is distributed under the University of Illinois Open Source
69594675cc1eb52a054de13c4a21e466643847480Chris Lattner// License. See LICENSE.TXT for details.
79594675cc1eb52a054de13c4a21e466643847480Chris Lattner//
89594675cc1eb52a054de13c4a21e466643847480Chris Lattner//===----------------------------------------------------------------------===//
99594675cc1eb52a054de13c4a21e466643847480Chris Lattner//
102f7f5b1f5ff023cb8c4008ae53a12b09e3ea2622James Dennett/// \file
11ef8225444452a1486bd721f3285301fe84643b00Stephen Hines/// \brief Forward-declares and imports various common LLVM datatypes that
122f7f5b1f5ff023cb8c4008ae53a12b09e3ea2622James Dennett/// clang wants to use unqualified.
132f7f5b1f5ff023cb8c4008ae53a12b09e3ea2622James Dennett///
149594675cc1eb52a054de13c4a21e466643847480Chris Lattner//===----------------------------------------------------------------------===//
159594675cc1eb52a054de13c4a21e466643847480Chris Lattner
169594675cc1eb52a054de13c4a21e466643847480Chris Lattner#ifndef CLANG_BASIC_LLVM_H
179594675cc1eb52a054de13c4a21e466643847480Chris Lattner#define CLANG_BASIC_LLVM_H
189594675cc1eb52a054de13c4a21e466643847480Chris Lattner
1966874fb18afbffb8b2ca05576851a64534be3352David Blaikie// Do not proliferate #includes here, require clients to #include their
2066874fb18afbffb8b2ca05576851a64534be3352David Blaikie// dependencies.
2166874fb18afbffb8b2ca05576851a64534be3352David Blaikie// Casting.h has complex templates that cannot be easily forward declared.
229594675cc1eb52a054de13c4a21e466643847480Chris Lattner#include "llvm/Support/Casting.h"
234d8fe830d59010d6f748fd1c62090c20538c582bDavid Blaikie// None.h includes an enumerator that is desired & cannot be forward declared
2466874fb18afbffb8b2ca05576851a64534be3352David Blaikie// without a definition of NoneType.
2566874fb18afbffb8b2ca05576851a64534be3352David Blaikie#include "llvm/ADT/None.h"
269594675cc1eb52a054de13c4a21e466643847480Chris Lattner
27686775deca8b8685eb90801495880e3abdd844c2Chris Lattnernamespace llvm {
28686775deca8b8685eb90801495880e3abdd844c2Chris Lattner  // ADT's.
29686775deca8b8685eb90801495880e3abdd844c2Chris Lattner  class StringRef;
308cc488fefb2fb04bc8d5398da29f0182f97934cfChris Lattner  class Twine;
312d3ba4f5a923a90c3fc290ddfba5e36c2d0a9b46Chris Lattner  template<typename T> class ArrayRef;
32ef8225444452a1486bd721f3285301fe84643b00Stephen Hines  template<typename T> class MutableArrayRef;
33f7ccbad5d9949e7ddd1cbef43d482553b811e026Dylan Noblesmith  template<unsigned InternalLen> class SmallString;
34686775deca8b8685eb90801495880e3abdd844c2Chris Lattner  template<typename T, unsigned N> class SmallVector;
35686775deca8b8685eb90801495880e3abdd844c2Chris Lattner  template<typename T> class SmallVectorImpl;
36dc84cd5efdd3430efb22546b4ac656aa0540b210David Blaikie  template<typename T> class Optional;
378cc488fefb2fb04bc8d5398da29f0182f97934cfChris Lattner
38d45d361f2ce5c37824052357e2218e8a5509eba5Argyrios Kyrtzidis  template<typename T>
39d45d361f2ce5c37824052357e2218e8a5509eba5Argyrios Kyrtzidis  struct SaveAndRestore;
40d45d361f2ce5c37824052357e2218e8a5509eba5Argyrios Kyrtzidis
41c93dc7889644293e318e19d82830ea2acc45b678Dylan Noblesmith  // Reference counting.
42c93dc7889644293e318e19d82830ea2acc45b678Dylan Noblesmith  template <typename T> class IntrusiveRefCntPtr;
43c93dc7889644293e318e19d82830ea2acc45b678Dylan Noblesmith  template <typename T> struct IntrusiveRefCntPtrInfo;
44c93dc7889644293e318e19d82830ea2acc45b678Dylan Noblesmith  template <class Derived> class RefCountedBase;
45c93dc7889644293e318e19d82830ea2acc45b678Dylan Noblesmith  class RefCountedBaseVPTR;
46c93dc7889644293e318e19d82830ea2acc45b678Dylan Noblesmith
478cc488fefb2fb04bc8d5398da29f0182f97934cfChris Lattner  class raw_ostream;
482d3ba4f5a923a90c3fc290ddfba5e36c2d0a9b46Chris Lattner  // TODO: DenseMap, ...
49686775deca8b8685eb90801495880e3abdd844c2Chris Lattner}
50686775deca8b8685eb90801495880e3abdd844c2Chris Lattner
51686775deca8b8685eb90801495880e3abdd844c2Chris Lattner
529594675cc1eb52a054de13c4a21e466643847480Chris Lattnernamespace clang {
539594675cc1eb52a054de13c4a21e466643847480Chris Lattner  // Casting operators.
549594675cc1eb52a054de13c4a21e466643847480Chris Lattner  using llvm::isa;
559594675cc1eb52a054de13c4a21e466643847480Chris Lattner  using llvm::cast;
569594675cc1eb52a054de13c4a21e466643847480Chris Lattner  using llvm::dyn_cast;
579594675cc1eb52a054de13c4a21e466643847480Chris Lattner  using llvm::dyn_cast_or_null;
589594675cc1eb52a054de13c4a21e466643847480Chris Lattner  using llvm::cast_or_null;
59686775deca8b8685eb90801495880e3abdd844c2Chris Lattner
608cc488fefb2fb04bc8d5398da29f0182f97934cfChris Lattner  // ADT's.
6166874fb18afbffb8b2ca05576851a64534be3352David Blaikie  using llvm::None;
62dc84cd5efdd3430efb22546b4ac656aa0540b210David Blaikie  using llvm::Optional;
63686775deca8b8685eb90801495880e3abdd844c2Chris Lattner  using llvm::StringRef;
648cc488fefb2fb04bc8d5398da29f0182f97934cfChris Lattner  using llvm::Twine;
652d3ba4f5a923a90c3fc290ddfba5e36c2d0a9b46Chris Lattner  using llvm::ArrayRef;
66ef8225444452a1486bd721f3285301fe84643b00Stephen Hines  using llvm::MutableArrayRef;
67f7ccbad5d9949e7ddd1cbef43d482553b811e026Dylan Noblesmith  using llvm::SmallString;
68686775deca8b8685eb90801495880e3abdd844c2Chris Lattner  using llvm::SmallVector;
69686775deca8b8685eb90801495880e3abdd844c2Chris Lattner  using llvm::SmallVectorImpl;
70d45d361f2ce5c37824052357e2218e8a5509eba5Argyrios Kyrtzidis  using llvm::SaveAndRestore;
71c93dc7889644293e318e19d82830ea2acc45b678Dylan Noblesmith
72c93dc7889644293e318e19d82830ea2acc45b678Dylan Noblesmith  // Reference counting.
73c93dc7889644293e318e19d82830ea2acc45b678Dylan Noblesmith  using llvm::IntrusiveRefCntPtr;
74c93dc7889644293e318e19d82830ea2acc45b678Dylan Noblesmith  using llvm::IntrusiveRefCntPtrInfo;
75c93dc7889644293e318e19d82830ea2acc45b678Dylan Noblesmith  using llvm::RefCountedBase;
76c93dc7889644293e318e19d82830ea2acc45b678Dylan Noblesmith  using llvm::RefCountedBaseVPTR;
77c93dc7889644293e318e19d82830ea2acc45b678Dylan Noblesmith
788cc488fefb2fb04bc8d5398da29f0182f97934cfChris Lattner  using llvm::raw_ostream;
799594675cc1eb52a054de13c4a21e466643847480Chris Lattner} // end namespace clang.
809594675cc1eb52a054de13c4a21e466643847480Chris Lattner
819594675cc1eb52a054de13c4a21e466643847480Chris Lattner#endif
82