blob: b5d0e2bffb038bbfd486e7d604dee215d498d78a [file] [log] [blame]
Andrew Scull5e1ddfa2018-08-14 10:06:54 +01001//===--- 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// lld wants to use unqualified.
12//
13//===----------------------------------------------------------------------===//
14
15#ifndef LLD_COMMON_LLVM_H
16#define LLD_COMMON_LLVM_H
17
18// This should be the only #include, force #includes of all the others on
19// clients.
20#include "llvm/ADT/Hashing.h"
21#include "llvm/Support/Casting.h"
22#include <utility>
23
24namespace llvm {
25 // ADT's.
26 class Error;
27 class StringRef;
28 class Twine;
29 class MemoryBuffer;
30 class MemoryBufferRef;
31 template<typename T> class ArrayRef;
32 template<unsigned InternalLen> class SmallString;
33 template<typename T, unsigned N> class SmallVector;
34 template<typename T> class SmallVectorImpl;
35
36 template<typename T>
37 struct SaveAndRestore;
38
39 template<typename T>
40 class ErrorOr;
41
42 template<typename T>
43 class Expected;
44
45 class raw_ostream;
46 // TODO: DenseMap, ...
47}
48
49namespace lld {
50 // Casting operators.
51 using llvm::isa;
52 using llvm::cast;
53 using llvm::dyn_cast;
54 using llvm::dyn_cast_or_null;
55 using llvm::cast_or_null;
56
57 // ADT's.
58 using llvm::Error;
59 using llvm::StringRef;
60 using llvm::Twine;
61 using llvm::MemoryBuffer;
62 using llvm::MemoryBufferRef;
63 using llvm::ArrayRef;
64 using llvm::SmallString;
65 using llvm::SmallVector;
66 using llvm::SmallVectorImpl;
67 using llvm::SaveAndRestore;
68 using llvm::ErrorOr;
69 using llvm::Expected;
70
71 using llvm::raw_ostream;
72} // end namespace lld.
73
74namespace std {
75template <> struct hash<llvm::StringRef> {
76public:
77 size_t operator()(const llvm::StringRef &s) const {
78 return llvm::hash_value(s);
79 }
80};
81}
82
83#endif