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