1 //===- PDBSymDumper.h - base interface for PDB symbol dumper *- C++ -----*-===// 2 // 3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4 // See https://llvm.org/LICENSE.txt for license information. 5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6 // 7 //===----------------------------------------------------------------------===// 8 9 #ifndef LLVM_DEBUGINFO_PDB_PDBSYMDUMPER_H 10 #define LLVM_DEBUGINFO_PDB_PDBSYMDUMPER_H 11 12 #include "PDBTypes.h" 13 14 namespace llvm { 15 16 class raw_ostream; 17 namespace pdb { 18 19 class PDBSymDumper { 20 public: 21 PDBSymDumper(bool ShouldRequireImpl); 22 virtual ~PDBSymDumper(); 23 24 virtual void dump(const PDBSymbolAnnotation &Symbol); 25 virtual void dump(const PDBSymbolBlock &Symbol); 26 virtual void dump(const PDBSymbolCompiland &Symbol); 27 virtual void dump(const PDBSymbolCompilandDetails &Symbol); 28 virtual void dump(const PDBSymbolCompilandEnv &Symbol); 29 virtual void dump(const PDBSymbolCustom &Symbol); 30 virtual void dump(const PDBSymbolData &Symbol); 31 virtual void dump(const PDBSymbolExe &Symbol); 32 virtual void dump(const PDBSymbolFunc &Symbol); 33 virtual void dump(const PDBSymbolFuncDebugEnd &Symbol); 34 virtual void dump(const PDBSymbolFuncDebugStart &Symbol); 35 virtual void dump(const PDBSymbolLabel &Symbol); 36 virtual void dump(const PDBSymbolPublicSymbol &Symbol); 37 virtual void dump(const PDBSymbolThunk &Symbol); 38 virtual void dump(const PDBSymbolTypeArray &Symbol); 39 virtual void dump(const PDBSymbolTypeBaseClass &Symbol); 40 virtual void dump(const PDBSymbolTypeBuiltin &Symbol); 41 virtual void dump(const PDBSymbolTypeCustom &Symbol); 42 virtual void dump(const PDBSymbolTypeDimension &Symbol); 43 virtual void dump(const PDBSymbolTypeEnum &Symbol); 44 virtual void dump(const PDBSymbolTypeFriend &Symbol); 45 virtual void dump(const PDBSymbolTypeFunctionArg &Symbol); 46 virtual void dump(const PDBSymbolTypeFunctionSig &Symbol); 47 virtual void dump(const PDBSymbolTypeManaged &Symbol); 48 virtual void dump(const PDBSymbolTypePointer &Symbol); 49 virtual void dump(const PDBSymbolTypeTypedef &Symbol); 50 virtual void dump(const PDBSymbolTypeUDT &Symbol); 51 virtual void dump(const PDBSymbolTypeVTable &Symbol); 52 virtual void dump(const PDBSymbolTypeVTableShape &Symbol); 53 virtual void dump(const PDBSymbolUnknown &Symbol); 54 virtual void dump(const PDBSymbolUsingNamespace &Symbol); 55 dumpRight(const PDBSymbolTypeArray & Symbol)56 virtual void dumpRight(const PDBSymbolTypeArray &Symbol) {} dumpRight(const PDBSymbolTypeBaseClass & Symbol)57 virtual void dumpRight(const PDBSymbolTypeBaseClass &Symbol) {} dumpRight(const PDBSymbolTypeBuiltin & Symbol)58 virtual void dumpRight(const PDBSymbolTypeBuiltin &Symbol) {} dumpRight(const PDBSymbolTypeCustom & Symbol)59 virtual void dumpRight(const PDBSymbolTypeCustom &Symbol) {} dumpRight(const PDBSymbolTypeDimension & Symbol)60 virtual void dumpRight(const PDBSymbolTypeDimension &Symbol) {} dumpRight(const PDBSymbolTypeEnum & Symbol)61 virtual void dumpRight(const PDBSymbolTypeEnum &Symbol) {} dumpRight(const PDBSymbolTypeFriend & Symbol)62 virtual void dumpRight(const PDBSymbolTypeFriend &Symbol) {} dumpRight(const PDBSymbolTypeFunctionArg & Symbol)63 virtual void dumpRight(const PDBSymbolTypeFunctionArg &Symbol) {} dumpRight(const PDBSymbolTypeFunctionSig & Symbol)64 virtual void dumpRight(const PDBSymbolTypeFunctionSig &Symbol) {} dumpRight(const PDBSymbolTypeManaged & Symbol)65 virtual void dumpRight(const PDBSymbolTypeManaged &Symbol) {} dumpRight(const PDBSymbolTypePointer & Symbol)66 virtual void dumpRight(const PDBSymbolTypePointer &Symbol) {} dumpRight(const PDBSymbolTypeTypedef & Symbol)67 virtual void dumpRight(const PDBSymbolTypeTypedef &Symbol) {} dumpRight(const PDBSymbolTypeUDT & Symbol)68 virtual void dumpRight(const PDBSymbolTypeUDT &Symbol) {} dumpRight(const PDBSymbolTypeVTable & Symbol)69 virtual void dumpRight(const PDBSymbolTypeVTable &Symbol) {} dumpRight(const PDBSymbolTypeVTableShape & Symbol)70 virtual void dumpRight(const PDBSymbolTypeVTableShape &Symbol) {} 71 72 private: 73 bool RequireImpl; 74 }; 75 } 76 } 77 78 #endif 79