blob: 6569a1d304f6c68f26d9148c144b26249d1fe570 [file] [log] [blame]
Zachary Turnereb6ab042017-01-11 00:35:43 +00001//===- PrettyClassDefinitionDumper.h ----------------------------*- 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_PRETTYCLASSDEFINITIONDUMPER_H
11#define LLVM_TOOLS_LLVMPDBDUMP_PRETTYCLASSDEFINITIONDUMPER_H
Zachary Turner92d755e2015-02-23 05:58:34 +000012
Zachary Turnere98c9132017-04-10 19:33:29 +000013#include "llvm/ADT/BitVector.h"
14
Zachary Turner92d755e2015-02-23 05:58:34 +000015#include "llvm/DebugInfo/PDB/PDBSymDumper.h"
Zachary Turner92d755e2015-02-23 05:58:34 +000016#include "llvm/DebugInfo/PDB/PDBSymbolData.h"
Zachary Turnereb6ab042017-01-11 00:35:43 +000017#include "llvm/DebugInfo/PDB/PDBSymbolFunc.h"
Zachary Turner92d755e2015-02-23 05:58:34 +000018
19#include <list>
20#include <memory>
21#include <unordered_map>
22
23namespace llvm {
Zachary Turner7724dc62017-04-12 23:18:21 +000024class BitVector;
25
Zachary Turnerc95df942016-05-04 20:32:13 +000026namespace pdb {
Zachary Turner92d755e2015-02-23 05:58:34 +000027
Zachary Turner67dcd802017-04-12 23:18:51 +000028class ClassLayout;
Zachary Turner756b8232015-02-27 09:15:59 +000029class LinePrinter;
30
Zachary Turner92d755e2015-02-23 05:58:34 +000031class ClassDefinitionDumper : public PDBSymDumper {
32public:
Zachary Turner756b8232015-02-27 09:15:59 +000033 ClassDefinitionDumper(LinePrinter &P);
Zachary Turner92d755e2015-02-23 05:58:34 +000034
Zachary Turner10683342017-04-13 21:11:00 +000035 void start(const PDBSymbolTypeUDT &Class);
36 void start(const ClassLayout &Class);
Zachary Turner92d755e2015-02-23 05:58:34 +000037
Zachary Turner92d755e2015-02-23 05:58:34 +000038private:
Zachary Turner67dcd802017-04-12 23:18:51 +000039 void prettyPrintClassIntro(const ClassLayout &Class);
40 void prettyPrintClassOutro(const ClassLayout &Class);
41
Zachary Turner756b8232015-02-27 09:15:59 +000042 LinePrinter &Printer;
Zachary Turner41374872017-04-24 17:47:52 +000043 bool DumpedAnything = false;
Zachary Turner92d755e2015-02-23 05:58:34 +000044};
45}
Zachary Turnerc95df942016-05-04 20:32:13 +000046}
Zachary Turner92d755e2015-02-23 05:58:34 +000047#endif