1ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines//===- VariableDumper.h - PDBSymDumper implementation for types -*- C++ -*-===//
2ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines//
3ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines//                     The LLVM Compiler Infrastructure
4ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines//
5ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines// This file is distributed under the University of Illinois Open Source
6ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines// License. See LICENSE.TXT for details.
7ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines//
8ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines//===----------------------------------------------------------------------===//
9ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
10ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines#ifndef LLVM_TOOLS_LLVMPDBDUMP_VARIABLEDUMPER_H
11ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines#define LLVM_TOOLS_LLVMPDBDUMP_VARIABLEDUMPER_H
12ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
13ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines#include "llvm/DebugInfo/PDB/PDBSymDumper.h"
14ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
15ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesnamespace llvm {
16ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
17de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarclass StringRef;
18de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar
19de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarnamespace pdb {
20de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar
214c5e43da7792f75567b693105cc53e3f1992ad98Pirama Arumuga Nainarclass LinePrinter;
224c5e43da7792f75567b693105cc53e3f1992ad98Pirama Arumuga Nainar
23ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesclass VariableDumper : public PDBSymDumper {
24ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinespublic:
254c5e43da7792f75567b693105cc53e3f1992ad98Pirama Arumuga Nainar  VariableDumper(LinePrinter &P);
264c5e43da7792f75567b693105cc53e3f1992ad98Pirama Arumuga Nainar
274c5e43da7792f75567b693105cc53e3f1992ad98Pirama Arumuga Nainar  void start(const PDBSymbolData &Var);
284c5e43da7792f75567b693105cc53e3f1992ad98Pirama Arumuga Nainar
294c5e43da7792f75567b693105cc53e3f1992ad98Pirama Arumuga Nainar  void dump(const PDBSymbolTypeBuiltin &Symbol) override;
304c5e43da7792f75567b693105cc53e3f1992ad98Pirama Arumuga Nainar  void dump(const PDBSymbolTypeEnum &Symbol) override;
314c5e43da7792f75567b693105cc53e3f1992ad98Pirama Arumuga Nainar  void dump(const PDBSymbolTypeFunctionSig &Symbol) override;
324c5e43da7792f75567b693105cc53e3f1992ad98Pirama Arumuga Nainar  void dump(const PDBSymbolTypePointer &Symbol) override;
334c5e43da7792f75567b693105cc53e3f1992ad98Pirama Arumuga Nainar  void dump(const PDBSymbolTypeTypedef &Symbol) override;
344c5e43da7792f75567b693105cc53e3f1992ad98Pirama Arumuga Nainar  void dump(const PDBSymbolTypeUDT &Symbol) override;
35ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
36ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesprivate:
374c5e43da7792f75567b693105cc53e3f1992ad98Pirama Arumuga Nainar  void dumpSymbolTypeAndName(const PDBSymbol &Type, StringRef Name);
384c5e43da7792f75567b693105cc53e3f1992ad98Pirama Arumuga Nainar  bool tryDumpFunctionPointer(const PDBSymbol &Type, StringRef Name);
394c5e43da7792f75567b693105cc53e3f1992ad98Pirama Arumuga Nainar
404c5e43da7792f75567b693105cc53e3f1992ad98Pirama Arumuga Nainar  LinePrinter &Printer;
41ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines};
42ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
43de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar}
44ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines#endif
45