LLVM.h revision 234353
1//===--- LLVM.h - Import various common LLVM datatypes ----------*- 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 forward declares and imports various common LLVM datatypes that 11// clang wants to use unqualified. 12// 13//===----------------------------------------------------------------------===// 14 15#ifndef CLANG_BASIC_LLVM_H 16#define CLANG_BASIC_LLVM_H 17 18// This should be the only #include, force #includes of all the others on 19// clients. 20#include "llvm/Support/Casting.h" 21 22namespace llvm { 23 // ADT's. 24 class StringRef; 25 class Twine; 26 template<typename T> class ArrayRef; 27 template<class T> class OwningPtr; 28 template<unsigned InternalLen> class SmallString; 29 template<typename T, unsigned N> class SmallVector; 30 template<typename T> class SmallVectorImpl; 31 32 template<typename T> 33 struct SaveAndRestore; 34 35 // Reference counting. 36 template <typename T> class IntrusiveRefCntPtr; 37 template <typename T> struct IntrusiveRefCntPtrInfo; 38 template <class Derived> class RefCountedBase; 39 class RefCountedBaseVPTR; 40 41 class raw_ostream; 42 // TODO: DenseMap, ... 43} 44 45 46namespace clang { 47 // Casting operators. 48 using llvm::isa; 49 using llvm::cast; 50 using llvm::dyn_cast; 51 using llvm::dyn_cast_or_null; 52 using llvm::cast_or_null; 53 54 // ADT's. 55 using llvm::StringRef; 56 using llvm::Twine; 57 using llvm::ArrayRef; 58 using llvm::OwningPtr; 59 using llvm::SmallString; 60 using llvm::SmallVector; 61 using llvm::SmallVectorImpl; 62 using llvm::SaveAndRestore; 63 64 // Reference counting. 65 using llvm::IntrusiveRefCntPtr; 66 using llvm::IntrusiveRefCntPtrInfo; 67 using llvm::RefCountedBase; 68 using llvm::RefCountedBaseVPTR; 69 70 using llvm::raw_ostream; 71} // end namespace clang. 72 73#endif 74