//===--- LLVM.h - Import various common LLVM datatypes ----------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // // 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/ADT/StringRef.h" #include "llvm/Support/Casting.h" #include namespace llvm { // ADT's. class raw_ostream; class Error; class StringRef; class Twine; class MemoryBuffer; class MemoryBufferRef; template class ArrayRef; template class MutableArrayRef; template class SmallString; template class SmallVector; template class ErrorOr; template class Expected; namespace object { class WasmObjectFile; struct WasmSection; struct WasmSegment; class WasmSymbol; } // namespace object namespace wasm { struct WasmTag; struct WasmFunction; struct WasmGlobal; struct WasmGlobalType; struct WasmInitExpr; struct WasmLimits; struct WasmRelocation; struct WasmSignature; struct WasmTable; struct WasmTableType; } // namespace wasm } // namespace llvm namespace lld { llvm::raw_ostream &outs(); llvm::raw_ostream &errs(); // 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::MutableArrayRef; 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::WasmFunction; using llvm::wasm::WasmGlobal; using llvm::wasm::WasmGlobalType; using llvm::wasm::WasmInitExpr; using llvm::wasm::WasmLimits; using llvm::wasm::WasmRelocation; using llvm::wasm::WasmSignature; using llvm::wasm::WasmTable; using llvm::wasm::WasmTableType; using llvm::wasm::WasmTag; } // end namespace lld. namespace std { template <> struct hash { public: size_t operator()(const llvm::StringRef &s) const { return llvm::hash_value(s); } }; } // namespace std #endif