Line data Source code
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 : /// \file
11 : /// \brief Forward-declares and imports various common LLVM datatypes that
12 : /// clang wants to use unqualified.
13 : ///
14 : //===----------------------------------------------------------------------===//
15 :
16 : #ifndef LLVM_CLANG_BASIC_LLVM_H
17 : #define LLVM_CLANG_BASIC_LLVM_H
18 :
19 : // Do not proliferate #includes here, require clients to #include their
20 : // dependencies.
21 : // Casting.h has complex templates that cannot be easily forward declared.
22 : #include "llvm/Support/Casting.h"
23 : // None.h includes an enumerator that is desired & cannot be forward declared
24 : // without a definition of NoneType.
25 : #include "llvm/ADT/None.h"
26 :
27 : namespace llvm {
28 : // ADT's.
29 : class StringRef;
30 : class Twine;
31 : template<typename T> class ArrayRef;
32 : template<typename T> class MutableArrayRef;
33 : template<unsigned InternalLen> class SmallString;
34 2 : template<typename T, unsigned N> class SmallVector;
35 : template<typename T> class SmallVectorImpl;
36 : template<typename T> class Optional;
37 :
38 : template<typename T>
39 : struct SaveAndRestore;
40 :
41 : // Reference counting.
42 : template <typename T> class IntrusiveRefCntPtr;
43 : template <typename T> struct IntrusiveRefCntPtrInfo;
44 : template <class Derived> class RefCountedBase;
45 : class RefCountedBaseVPTR;
46 :
47 : class raw_ostream;
48 : class raw_pwrite_stream;
49 : // TODO: DenseMap, ...
50 : }
51 :
52 :
53 : namespace clang {
54 : // Casting operators.
55 : using llvm::isa;
56 : using llvm::cast;
57 : using llvm::dyn_cast;
58 : using llvm::dyn_cast_or_null;
59 : using llvm::cast_or_null;
60 :
61 : // ADT's.
62 : using llvm::None;
63 : using llvm::Optional;
64 : using llvm::StringRef;
65 : using llvm::Twine;
66 : using llvm::ArrayRef;
67 : using llvm::MutableArrayRef;
68 : using llvm::SmallString;
69 : using llvm::SmallVector;
70 : using llvm::SmallVectorImpl;
71 : using llvm::SaveAndRestore;
72 :
73 : // Reference counting.
74 : using llvm::IntrusiveRefCntPtr;
75 : using llvm::IntrusiveRefCntPtrInfo;
76 : using llvm::RefCountedBase;
77 : using llvm::RefCountedBaseVPTR;
78 :
79 : using llvm::raw_ostream;
80 : using llvm::raw_pwrite_stream;
81 : } // end namespace clang.
82 :
83 : #endif
|