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 // 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 24 namespace 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 49 namespace 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 74 namespace std { 75 template <> struct hash<llvm::StringRef> { 76 public: 77 size_t operator()(const llvm::StringRef &s) const { 78 return llvm::hash_value(s); 79 } 80 }; 81 } 82 83 #endif 84