//===--- LLVM.h - Import various common LLVM datatypes ----------*- C++ -*-===// // // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // // This file forward declares and imports various common LLVM datatypes that // lld wants to use unqualified. // //===----------------------------------------------------------------------===// #ifndef LLD_COMMON_LLVM_H #define LLD_COMMON_LLVM_H // This should be the only #include, force #includes of all the others on // clients. #include "llvm/ADT/Hashing.h" #include "llvm/Support/Casting.h" #include <utility> namespace llvm { // ADT's. class raw_ostream; class Error; class StringRef; class Twine; class MemoryBuffer; class MemoryBufferRef; template <typename T> class ArrayRef; template <unsigned InternalLen> class SmallString; template <typename T, unsigned N> class SmallVector; template <typename T> class ErrorOr; template <typename T> class Expected; namespace object { class WasmObjectFile; struct WasmSection; struct WasmSegment; class WasmSymbol; } // namespace object namespace wasm { struct WasmEvent; struct WasmEventType; struct WasmFunction; struct WasmGlobal; struct WasmGlobalType; struct WasmRelocation; struct WasmSignature; } // namespace wasm } // namespace llvm namespace lld { // Casting operators. using llvm::cast; using llvm::cast_or_null; using llvm::dyn_cast; using llvm::dyn_cast_or_null; using llvm::isa; // ADT's. using llvm::ArrayRef; using llvm::Error; using llvm::ErrorOr; using llvm::Expected; using llvm::MemoryBuffer; using llvm::MemoryBufferRef; using llvm::raw_ostream; using llvm::SmallString; using llvm::SmallVector; using llvm::StringRef; using llvm::Twine; using llvm::object::WasmObjectFile; using llvm::object::WasmSection; using llvm::object::WasmSegment; using llvm::object::WasmSymbol; using llvm::wasm::WasmEvent; using llvm::wasm::WasmEventType; using llvm::wasm::WasmFunction; using llvm::wasm::WasmGlobal; using llvm::wasm::WasmGlobalType; using llvm::wasm::WasmRelocation; using llvm::wasm::WasmSignature; } // end namespace lld. namespace std { template <> struct hash<llvm::StringRef> { public: size_t operator()(const llvm::StringRef &s) const { return llvm::hash_value(s); } }; } // namespace std #endif