blob: cacf1ce9577b03eda8d53525c6527a5904d0ea3a [file] [log] [blame]
Zachary Turnereb6ab042017-01-11 00:35:43 +00001//===- PrettyVariableDumper.h - PDBSymDumper variable dumper ----*- C++ -*-===//
Zachary Turner92d755e2015-02-23 05:58:34 +00002//
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
Zachary Turnereb6ab042017-01-11 00:35:43 +000010#ifndef LLVM_TOOLS_LLVMPDBDUMP_PRETTYVARIABLEDUMPER_H
11#define LLVM_TOOLS_LLVMPDBDUMP_PRETTYVARIABLEDUMPER_H
Zachary Turner92d755e2015-02-23 05:58:34 +000012
13#include "llvm/DebugInfo/PDB/PDBSymDumper.h"
Zachary Turner92d755e2015-02-23 05:58:34 +000014
15namespace llvm {
16
Mehdi Aminif6071e12016-04-18 09:17:29 +000017class StringRef;
Zachary Turnerc95df942016-05-04 20:32:13 +000018
19namespace pdb {
20
Zachary Turner756b8232015-02-27 09:15:59 +000021class LinePrinter;
22
Zachary Turner92d755e2015-02-23 05:58:34 +000023class VariableDumper : public PDBSymDumper {
24public:
Zachary Turner756b8232015-02-27 09:15:59 +000025 VariableDumper(LinePrinter &P);
Zachary Turner92d755e2015-02-23 05:58:34 +000026
Zachary Turner10683342017-04-13 21:11:00 +000027 void start(const PDBSymbolData &Var, uint32_t Offset = 0);
28 void start(const PDBSymbolTypeVTable &Var, uint32_t Offset = 0);
Zachary Turner0e8b7072017-04-24 17:47:24 +000029 void startVbptr(uint32_t Offset, uint32_t Size);
Zachary Turner92d755e2015-02-23 05:58:34 +000030
Adrian McCarthy95d726a2017-04-10 16:43:09 +000031 void dump(const PDBSymbolTypeArray &Symbol) override;
Zachary Turner53e4b562015-03-01 06:51:29 +000032 void dump(const PDBSymbolTypeBuiltin &Symbol) override;
33 void dump(const PDBSymbolTypeEnum &Symbol) override;
34 void dump(const PDBSymbolTypeFunctionSig &Symbol) override;
35 void dump(const PDBSymbolTypePointer &Symbol) override;
36 void dump(const PDBSymbolTypeTypedef &Symbol) override;
37 void dump(const PDBSymbolTypeUDT &Symbol) override;
Zachary Turner92d755e2015-02-23 05:58:34 +000038
Adrian McCarthy95d726a2017-04-10 16:43:09 +000039 void dumpRight(const PDBSymbolTypeArray &Symbol) override;
40 void dumpRight(const PDBSymbolTypeFunctionSig &Symbol) override;
41 void dumpRight(const PDBSymbolTypePointer &Symbol) override;
42
Zachary Turner92d755e2015-02-23 05:58:34 +000043private:
Zachary Turner53e4b562015-03-01 06:51:29 +000044 void dumpSymbolTypeAndName(const PDBSymbol &Type, StringRef Name);
Zachary Turner756b8232015-02-27 09:15:59 +000045
46 LinePrinter &Printer;
Zachary Turner92d755e2015-02-23 05:58:34 +000047};
48}
Zachary Turnerc95df942016-05-04 20:32:13 +000049}
Zachary Turner92d755e2015-02-23 05:58:34 +000050#endif