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