Path: blob/main/contrib/llvm-project/llvm/tools/llvm-pdbutil/PrettyClassLayoutGraphicalDumper.h
35260 views
//===- PrettyClassLayoutGraphicalDumper.h -----------------------*- C++ -*-===//1//2// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.3// See https://llvm.org/LICENSE.txt for license information.4// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception5//6//===----------------------------------------------------------------------===//78#ifndef LLVM_TOOLS_LLVMPDBDUMP_PRETTYCLASSLAYOUTGRAPHICALDUMPER_H9#define LLVM_TOOLS_LLVMPDBDUMP_PRETTYCLASSLAYOUTGRAPHICALDUMPER_H1011#include "llvm/DebugInfo/PDB/PDBSymDumper.h"1213namespace llvm {1415namespace pdb {1617class UDTLayoutBase;18class LayoutItemBase;19class LinePrinter;2021class PrettyClassLayoutGraphicalDumper : public PDBSymDumper {22public:23PrettyClassLayoutGraphicalDumper(LinePrinter &P, uint32_t RecurseLevel,24uint32_t InitialOffset);2526bool start(const UDTLayoutBase &Layout);2728// Layout based symbol types.29void dump(const PDBSymbolTypeBaseClass &Symbol) override;30void dump(const PDBSymbolData &Symbol) override;31void dump(const PDBSymbolTypeVTable &Symbol) override;3233// Non layout-based symbol types.34void dump(const PDBSymbolTypeEnum &Symbol) override;35void dump(const PDBSymbolFunc &Symbol) override;36void dump(const PDBSymbolTypeTypedef &Symbol) override;37void dump(const PDBSymbolTypeUDT &Symbol) override;38void dump(const PDBSymbolTypeBuiltin &Symbol) override;3940private:41bool shouldRecurse() const;42void printPaddingRow(uint32_t Amount);4344LinePrinter &Printer;4546LayoutItemBase *CurrentItem = nullptr;47uint32_t RecursionLevel = 0;48uint32_t ClassOffsetZero = 0;49uint32_t CurrentAbsoluteOffset = 0;50bool DumpedAnything = false;51};52}53}54#endif555657