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