1326947Sdim//===--- LLVM.h - Import various common LLVM datatypes ----------*- C++ -*-===// 2326947Sdim// 3353358Sdim// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4353358Sdim// See https://llvm.org/LICENSE.txt for license information. 5353358Sdim// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6326947Sdim// 7326947Sdim//===----------------------------------------------------------------------===// 8326947Sdim// 9326947Sdim// This file forward declares and imports various common LLVM datatypes that 10326947Sdim// lld wants to use unqualified. 11326947Sdim// 12326947Sdim//===----------------------------------------------------------------------===// 13326947Sdim 14326947Sdim#ifndef LLD_COMMON_LLVM_H 15326947Sdim#define LLD_COMMON_LLVM_H 16326947Sdim 17326947Sdim// This should be the only #include, force #includes of all the others on 18326947Sdim// clients. 19326947Sdim#include "llvm/ADT/Hashing.h" 20360784Sdim#include "llvm/ADT/StringRef.h" 21326947Sdim#include "llvm/Support/Casting.h" 22326947Sdim#include <utility> 23326947Sdim 24326947Sdimnamespace llvm { 25344779Sdim// ADT's. 26344779Sdimclass raw_ostream; 27344779Sdimclass Error; 28344779Sdimclass StringRef; 29344779Sdimclass Twine; 30344779Sdimclass MemoryBuffer; 31344779Sdimclass MemoryBufferRef; 32344779Sdimtemplate <typename T> class ArrayRef; 33353358Sdimtemplate <typename T> class MutableArrayRef; 34344779Sdimtemplate <unsigned InternalLen> class SmallString; 35344779Sdimtemplate <typename T, unsigned N> class SmallVector; 36344779Sdimtemplate <typename T> class ErrorOr; 37344779Sdimtemplate <typename T> class Expected; 38326947Sdim 39344779Sdimnamespace object { 40344779Sdimclass WasmObjectFile; 41344779Sdimstruct WasmSection; 42344779Sdimstruct WasmSegment; 43344779Sdimclass WasmSymbol; 44344779Sdim} // namespace object 45326947Sdim 46344779Sdimnamespace wasm { 47344779Sdimstruct WasmEvent; 48344779Sdimstruct WasmEventType; 49344779Sdimstruct WasmFunction; 50344779Sdimstruct WasmGlobal; 51344779Sdimstruct WasmGlobalType; 52344779Sdimstruct WasmRelocation; 53344779Sdimstruct WasmSignature; 54344779Sdim} // namespace wasm 55344779Sdim} // namespace llvm 56326947Sdim 57326947Sdimnamespace lld { 58360784Sdimllvm::raw_ostream &outs(); 59360784Sdimllvm::raw_ostream &errs(); 60360784Sdim 61344779Sdim// Casting operators. 62344779Sdimusing llvm::cast; 63344779Sdimusing llvm::cast_or_null; 64344779Sdimusing llvm::dyn_cast; 65344779Sdimusing llvm::dyn_cast_or_null; 66344779Sdimusing llvm::isa; 67326947Sdim 68344779Sdim// ADT's. 69344779Sdimusing llvm::ArrayRef; 70353358Sdimusing llvm::MutableArrayRef; 71344779Sdimusing llvm::Error; 72344779Sdimusing llvm::ErrorOr; 73344779Sdimusing llvm::Expected; 74344779Sdimusing llvm::MemoryBuffer; 75344779Sdimusing llvm::MemoryBufferRef; 76344779Sdimusing llvm::raw_ostream; 77344779Sdimusing llvm::SmallString; 78344779Sdimusing llvm::SmallVector; 79344779Sdimusing llvm::StringRef; 80344779Sdimusing llvm::Twine; 81326947Sdim 82344779Sdimusing llvm::object::WasmObjectFile; 83344779Sdimusing llvm::object::WasmSection; 84344779Sdimusing llvm::object::WasmSegment; 85344779Sdimusing llvm::object::WasmSymbol; 86344779Sdimusing llvm::wasm::WasmEvent; 87344779Sdimusing llvm::wasm::WasmEventType; 88344779Sdimusing llvm::wasm::WasmFunction; 89344779Sdimusing llvm::wasm::WasmGlobal; 90344779Sdimusing llvm::wasm::WasmGlobalType; 91344779Sdimusing llvm::wasm::WasmRelocation; 92344779Sdimusing llvm::wasm::WasmSignature; 93326947Sdim} // end namespace lld. 94326947Sdim 95326947Sdimnamespace std { 96326947Sdimtemplate <> struct hash<llvm::StringRef> { 97326947Sdimpublic: 98326947Sdim size_t operator()(const llvm::StringRef &s) const { 99326947Sdim return llvm::hash_value(s); 100326947Sdim } 101326947Sdim}; 102344779Sdim} // namespace std 103326947Sdim 104326947Sdim#endif 105