#include "PrettyTypeDumper.h"
#include "PrettyBuiltinDumper.h"
#include "PrettyClassDefinitionDumper.h"
#include "PrettyEnumDumper.h"
#include "PrettyFunctionDumper.h"
#include "PrettyTypedefDumper.h"
#include "llvm-pdbutil.h"
#include "llvm/DebugInfo/PDB/ConcreteSymbolEnumerator.h"
#include "llvm/DebugInfo/PDB/IPDBLineNumber.h"
#include "llvm/DebugInfo/PDB/IPDBSession.h"
#include "llvm/DebugInfo/PDB/PDBSymbolExe.h"
#include "llvm/DebugInfo/PDB/PDBSymbolTypeArray.h"
#include "llvm/DebugInfo/PDB/PDBSymbolTypeBuiltin.h"
#include "llvm/DebugInfo/PDB/PDBSymbolTypeEnum.h"
#include "llvm/DebugInfo/PDB/PDBSymbolTypeFunctionSig.h"
#include "llvm/DebugInfo/PDB/PDBSymbolTypePointer.h"
#include "llvm/DebugInfo/PDB/PDBSymbolTypeTypedef.h"
#include "llvm/DebugInfo/PDB/PDBSymbolTypeUDT.h"
#include "llvm/DebugInfo/PDB/PDBSymbolTypeVTableShape.h"
#include "llvm/DebugInfo/PDB/UDTLayout.h"
#include "llvm/Support/Compiler.h"
#include "llvm/Support/FormatVariadic.h"
usingnamespacellvm;
usingnamespacellvm::pdb;
LayoutPtr;
CompareFunc;
static bool CompareNames(const LayoutPtr &S1, const LayoutPtr &S2) { … }
static bool CompareSizes(const LayoutPtr &S1, const LayoutPtr &S2) { … }
static bool ComparePadding(const LayoutPtr &S1, const LayoutPtr &S2) { … }
static bool ComparePaddingPct(const LayoutPtr &S1, const LayoutPtr &S2) { … }
static bool ComparePaddingImmediate(const LayoutPtr &S1, const LayoutPtr &S2) { … }
static bool ComparePaddingPctImmediate(const LayoutPtr &S1,
const LayoutPtr &S2) { … }
static CompareFunc getComparisonFunc(opts::pretty::ClassSortMode Mode) { … }
template <typename Enumerator>
static std::vector<std::unique_ptr<ClassLayout>>
filterAndSortClassDefs(LinePrinter &Printer, Enumerator &E,
uint32_t UnfilteredCount) { … }
TypeDumper::TypeDumper(LinePrinter &P) : … { … }
template <typename T>
static bool isTypeExcluded(LinePrinter &Printer, const T &Symbol) { … }
static bool isTypeExcluded(LinePrinter &Printer,
const PDBSymbolTypeEnum &Enum) { … }
static bool isTypeExcluded(LinePrinter &Printer,
const PDBSymbolTypeTypedef &Typedef) { … }
template <typename SymbolT>
static void dumpSymbolCategory(LinePrinter &Printer, const PDBSymbolExe &Exe,
TypeDumper &TD, StringRef Label) { … }
static void printClassDecl(LinePrinter &Printer,
const PDBSymbolTypeUDT &Class) { … }
void TypeDumper::start(const PDBSymbolExe &Exe) { … }
void TypeDumper::dump(const PDBSymbolTypeEnum &Symbol) { … }
void TypeDumper::dump(const PDBSymbolTypeBuiltin &Symbol) { … }
void TypeDumper::dump(const PDBSymbolTypeUDT &Symbol) { … }
void TypeDumper::dump(const PDBSymbolTypeTypedef &Symbol) { … }
void TypeDumper::dump(const PDBSymbolTypeArray &Symbol) { … }
void TypeDumper::dump(const PDBSymbolTypeFunctionSig &Symbol) { … }
void TypeDumper::dump(const PDBSymbolTypePointer &Symbol) { … }
void TypeDumper::dump(const PDBSymbolTypeVTableShape &Symbol) { … }
void TypeDumper::dumpClassLayout(const ClassLayout &Class) { … }