Home | History | Annotate | Download | only in PDB
      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 
     15 namespace llvm {
     16 
     17 class raw_ostream;
     18 namespace pdb {
     19 
     20 class PDBSymDumper {
     21 public:
     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 
     73 private:
     74   bool RequireImpl;
     75 };
     76 }
     77 }
     78 
     79 #endif
     80