xref: /freebsd/contrib/llvm-project/llvm/tools/llvm-pdbutil/PrettyClassDefinitionDumper.h (revision aa1a8ff2d6dbc51ef058f46f3db5a8bb77967145)
1 //===- PrettyClassDefinitionDumper.h ----------------------------*- 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_PRETTYCLASSDEFINITIONDUMPER_H
10 #define LLVM_TOOLS_LLVMPDBDUMP_PRETTYCLASSDEFINITIONDUMPER_H
11 
12 #include "llvm/ADT/BitVector.h"
13 
14 #include "llvm/DebugInfo/PDB/PDBSymDumper.h"
15 #include "llvm/DebugInfo/PDB/PDBSymbolData.h"
16 #include "llvm/DebugInfo/PDB/PDBSymbolFunc.h"
17 
18 #include <memory>
19 
20 namespace llvm {
21 class BitVector;
22 
23 namespace pdb {
24 
25 class ClassLayout;
26 class LinePrinter;
27 
28 class ClassDefinitionDumper : public PDBSymDumper {
29 public:
30   ClassDefinitionDumper(LinePrinter &P);
31 
32   void start(const PDBSymbolTypeUDT &Class);
33   void start(const ClassLayout &Class);
34 
35 private:
36   void prettyPrintClassIntro(const ClassLayout &Class);
37   void prettyPrintClassOutro(const ClassLayout &Class);
38 
39   LinePrinter &Printer;
40   bool DumpedAnything = false;
41 };
42 }
43 }
44 #endif
45