blob: 65cf5cd2cf5522286f6c9b4dd3186d87d315aacd [file] [log] [blame]
Zachary Turnera9054dd2017-01-11 00:35:43 +00001//===- PrettyVariableDumper.h - PDBSymDumper variable dumper ----*- C++ -*-===//
Zachary Turner29c69102015-02-23 05:58:34 +00002//
Chandler Carruth2946cd72019-01-19 08:50:56 +00003// 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
Zachary Turner29c69102015-02-23 05:58:34 +00006//
7//===----------------------------------------------------------------------===//
8
Zachary Turnera9054dd2017-01-11 00:35:43 +00009#ifndef LLVM_TOOLS_LLVMPDBDUMP_PRETTYVARIABLEDUMPER_H
10#define LLVM_TOOLS_LLVMPDBDUMP_PRETTYVARIABLEDUMPER_H
Zachary Turner29c69102015-02-23 05:58:34 +000011
12#include "llvm/DebugInfo/PDB/PDBSymDumper.h"
Zachary Turner29c69102015-02-23 05:58:34 +000013
14namespace llvm {
15
Mehdi Aminib550cb12016-04-18 09:17:29 +000016class StringRef;
Zachary Turnerec28fc32016-05-04 20:32:13 +000017
18namespace pdb {
19
Zachary Turner2d11c202015-02-27 09:15:59 +000020class LinePrinter;
21
Zachary Turner29c69102015-02-23 05:58:34 +000022class VariableDumper : public PDBSymDumper {
23public:
Zachary Turner2d11c202015-02-27 09:15:59 +000024 VariableDumper(LinePrinter &P);
Zachary Turner29c69102015-02-23 05:58:34 +000025
Zachary Turner4dc4f012017-04-13 21:11:00 +000026 void start(const PDBSymbolData &Var, uint32_t Offset = 0);
27 void start(const PDBSymbolTypeVTable &Var, uint32_t Offset = 0);
Zachary Turner16901642017-04-24 17:47:24 +000028 void startVbptr(uint32_t Offset, uint32_t Size);
Zachary Turner29c69102015-02-23 05:58:34 +000029
Adrian McCarthy08eb3432017-04-10 16:43:09 +000030 void dump(const PDBSymbolTypeArray &Symbol) override;
Zachary Turnerb52d08d2015-03-01 06:51:29 +000031 void dump(const PDBSymbolTypeBuiltin &Symbol) override;
32 void dump(const PDBSymbolTypeEnum &Symbol) override;
33 void dump(const PDBSymbolTypeFunctionSig &Symbol) override;
34 void dump(const PDBSymbolTypePointer &Symbol) override;
35 void dump(const PDBSymbolTypeTypedef &Symbol) override;
36 void dump(const PDBSymbolTypeUDT &Symbol) override;
Zachary Turner29c69102015-02-23 05:58:34 +000037
Adrian McCarthy08eb3432017-04-10 16:43:09 +000038 void dumpRight(const PDBSymbolTypeArray &Symbol) override;
39 void dumpRight(const PDBSymbolTypeFunctionSig &Symbol) override;
40 void dumpRight(const PDBSymbolTypePointer &Symbol) override;
41
Zachary Turner29c69102015-02-23 05:58:34 +000042private:
Zachary Turnerb52d08d2015-03-01 06:51:29 +000043 void dumpSymbolTypeAndName(const PDBSymbol &Type, StringRef Name);
Zachary Turner2d11c202015-02-27 09:15:59 +000044
45 LinePrinter &Printer;
Zachary Turner29c69102015-02-23 05:58:34 +000046};
47}
Zachary Turnerec28fc32016-05-04 20:32:13 +000048}
Zachary Turner29c69102015-02-23 05:58:34 +000049#endif