1//===- PrettyTypeDumper.h - PDBSymDumper implementation for types *- C++ *-===//
2//
3// 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
6//
7//===----------------------------------------------------------------------===//
8
9#ifndef LLVM_TOOLS_LLVMPDBDUMP_PRETTYTYPEDUMPER_H
10#define LLVM_TOOLS_LLVMPDBDUMP_PRETTYTYPEDUMPER_H
11
12#include "llvm/DebugInfo/PDB/PDBSymDumper.h"
13
14namespace llvm {
15namespace pdb {
16class LinePrinter;
17class ClassLayout;
18
19class TypeDumper : public PDBSymDumper {
20public:
21  TypeDumper(LinePrinter &P);
22
23  void start(const PDBSymbolExe &Exe);
24
25  void dump(const PDBSymbolTypeEnum &Symbol) override;
26  void dump(const PDBSymbolTypeTypedef &Symbol) override;
27  void dump(const PDBSymbolTypeFunctionSig &Symbol) override;
28  void dump(const PDBSymbolTypeArray &Symbol) override;
29  void dump(const PDBSymbolTypeBuiltin &Symbol) override;
30  void dump(const PDBSymbolTypePointer &Symbol) override;
31  void dump(const PDBSymbolTypeVTableShape &Symbol) override;
32  void dump(const PDBSymbolTypeUDT &Symbol) override;
33
34  void dumpClassLayout(const ClassLayout &Class);
35
36private:
37  LinePrinter &Printer;
38};
39}
40}
41#endif
42