//===- IPDBRawSymbol.h - base interface for PDB symbol types ----*- 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 // //===----------------------------------------------------------------------===// #ifndef LLVM_DEBUGINFO_PDB_IPDBRAWSYMBOL_H #define LLVM_DEBUGINFO_PDB_IPDBRAWSYMBOL_H #include "PDBTypes.h" #include "llvm/ADT/BitmaskEnum.h" #include "llvm/ADT/SmallVector.h" #include "llvm/DebugInfo/CodeView/CodeView.h" #include <memory> namespace llvm { class raw_ostream; class StringRef; namespace pdb { enum class PdbSymbolIdField : uint32_t { … }; void dumpSymbolIdField(raw_ostream &OS, StringRef Name, SymIndexId Value, int Indent, const IPDBSession &Session, PdbSymbolIdField FieldId, PdbSymbolIdField ShowFlags, PdbSymbolIdField RecurseFlags); /// IPDBRawSymbol defines an interface used to represent an arbitrary symbol. /// It exposes a monolithic interface consisting of accessors for the union of /// all properties that are valid for any symbol type. This interface is then /// wrapped by a concrete class which exposes only those set of methods valid /// for this particular symbol type. See PDBSymbol.h for more details. class IPDBRawSymbol { … }; LLVM_ENABLE_BITMASK_ENUMS_IN_NAMESPACE(…); } // namespace pdb } // namespace llvm #endif