003 File Manager
Current Path:
/usr/src/contrib/llvm-project/llvm/tools/llvm-pdbutil
usr
/
src
/
contrib
/
llvm-project
/
llvm
/
tools
/
llvm-pdbutil
/
📁
..
📄
BytesOutputStyle.cpp
(14.1 KB)
📄
BytesOutputStyle.h
(1.61 KB)
📄
DumpOutputStyle.cpp
(63.95 KB)
📄
DumpOutputStyle.h
(2.94 KB)
📄
ExplainOutputStyle.cpp
(18.16 KB)
📄
ExplainOutputStyle.h
(1.64 KB)
📄
FormatUtil.cpp
(11.89 KB)
📄
FormatUtil.h
(4.47 KB)
📄
InputFile.cpp
(14.26 KB)
📄
InputFile.h
(4.31 KB)
📄
LinePrinter.cpp
(10 KB)
📄
LinePrinter.h
(4.37 KB)
📄
MinimalSymbolDumper.cpp
(34.92 KB)
📄
MinimalSymbolDumper.h
(2.52 KB)
📄
MinimalTypeDumper.cpp
(22.68 KB)
📄
MinimalTypeDumper.h
(2.73 KB)
📄
OutputStyle.h
(643 B)
📄
PdbYaml.cpp
(7.83 KB)
📄
PdbYaml.h
(3.6 KB)
📄
PrettyBuiltinDumper.cpp
(2.6 KB)
📄
PrettyBuiltinDumper.h
(856 B)
📄
PrettyClassDefinitionDumper.cpp
(3.7 KB)
📄
PrettyClassDefinitionDumper.h
(1.17 KB)
📄
PrettyClassLayoutGraphicalDumper.cpp
(6.81 KB)
📄
PrettyClassLayoutGraphicalDumper.h
(1.7 KB)
📄
PrettyCompilandDumper.cpp
(7.77 KB)
📄
PrettyCompilandDumper.h
(1.37 KB)
📄
PrettyEnumDumper.cpp
(2.38 KB)
📄
PrettyEnumDumper.h
(746 B)
📄
PrettyExternalSymbolDumper.cpp
(1.32 KB)
📄
PrettyExternalSymbolDumper.h
(842 B)
📄
PrettyFunctionDumper.cpp
(9.01 KB)
📄
PrettyFunctionDumper.h
(1.31 KB)
📄
PrettyTypeDumper.cpp
(11.3 KB)
📄
PrettyTypeDumper.h
(1.24 KB)
📄
PrettyTypedefDumper.cpp
(3.02 KB)
📄
PrettyTypedefDumper.h
(1.08 KB)
📄
PrettyVariableDumper.cpp
(7.29 KB)
📄
PrettyVariableDumper.h
(1.54 KB)
📄
StreamUtil.cpp
(7.81 KB)
📄
StreamUtil.h
(1.55 KB)
📄
TypeReferenceTracker.cpp
(5.53 KB)
📄
TypeReferenceTracker.h
(2.07 KB)
📄
YAMLOutputStyle.cpp
(10.96 KB)
📄
YAMLOutputStyle.h
(1.17 KB)
📄
llvm-pdbutil.cpp
(63.12 KB)
📄
llvm-pdbutil.h
(6.77 KB)
Editing: LinePrinter.h
//===- LinePrinter.h ------------------------------------------ *- C++ --*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #ifndef LLVM_TOOLS_LLVMPDBDUMP_LINEPRINTER_H #define LLVM_TOOLS_LLVMPDBDUMP_LINEPRINTER_H #include "llvm/ADT/ArrayRef.h" #include "llvm/ADT/StringRef.h" #include "llvm/ADT/Twine.h" #include "llvm/Support/BinaryStreamRef.h" #include "llvm/Support/FormatVariadic.h" #include "llvm/Support/Regex.h" #include "llvm/Support/raw_ostream.h" #include <list> namespace llvm { class BinaryStreamReader; namespace msf { class MSFStreamLayout; } // namespace msf namespace pdb { class ClassLayout; class PDBFile; class LinePrinter { friend class WithColor; public: LinePrinter(int Indent, bool UseColor, raw_ostream &Stream); void Indent(uint32_t Amount = 0); void Unindent(uint32_t Amount = 0); void NewLine(); void printLine(const Twine &T); void print(const Twine &T); template <typename... Ts> void formatLine(const char *Fmt, Ts &&... Items) { printLine(formatv(Fmt, std::forward<Ts>(Items)...)); } template <typename... Ts> void format(const char *Fmt, Ts &&... Items) { print(formatv(Fmt, std::forward<Ts>(Items)...)); } void formatBinary(StringRef Label, ArrayRef<uint8_t> Data, uint32_t StartOffset); void formatBinary(StringRef Label, ArrayRef<uint8_t> Data, uint64_t BaseAddr, uint32_t StartOffset); void formatMsfStreamData(StringRef Label, PDBFile &File, uint32_t StreamIdx, StringRef StreamPurpose, uint32_t Offset, uint32_t Size); void formatMsfStreamData(StringRef Label, PDBFile &File, const msf::MSFStreamLayout &Stream, BinarySubstreamRef Substream); void formatMsfStreamBlocks(PDBFile &File, const msf::MSFStreamLayout &Stream); bool hasColor() const { return UseColor; } raw_ostream &getStream() { return OS; } int getIndentLevel() const { return CurrentIndent; } bool IsClassExcluded(const ClassLayout &Class); bool IsTypeExcluded(llvm::StringRef TypeName, uint32_t Size); bool IsSymbolExcluded(llvm::StringRef SymbolName); bool IsCompilandExcluded(llvm::StringRef CompilandName); private: template <typename Iter> void SetFilters(std::list<Regex> &List, Iter Begin, Iter End) { List.clear(); for (; Begin != End; ++Begin) List.emplace_back(StringRef(*Begin)); } raw_ostream &OS; int IndentSpaces; int CurrentIndent; bool UseColor; std::list<Regex> ExcludeCompilandFilters; std::list<Regex> ExcludeTypeFilters; std::list<Regex> ExcludeSymbolFilters; std::list<Regex> IncludeCompilandFilters; std::list<Regex> IncludeTypeFilters; std::list<Regex> IncludeSymbolFilters; }; struct PrintScope { explicit PrintScope(LinePrinter &P, uint32_t IndentLevel) : P(P), IndentLevel(IndentLevel) {} explicit PrintScope(const PrintScope &Other, uint32_t LabelWidth) : P(Other.P), IndentLevel(Other.IndentLevel), LabelWidth(LabelWidth) {} LinePrinter &P; uint32_t IndentLevel; uint32_t LabelWidth = 0; }; inline Optional<PrintScope> withLabelWidth(const Optional<PrintScope> &Scope, uint32_t W) { if (!Scope) return None; return PrintScope{*Scope, W}; } struct AutoIndent { explicit AutoIndent(LinePrinter &L, uint32_t Amount = 0) : L(&L), Amount(Amount) { L.Indent(Amount); } explicit AutoIndent(const Optional<PrintScope> &Scope) { if (Scope.hasValue()) { L = &Scope->P; Amount = Scope->IndentLevel; } } ~AutoIndent() { if (L) L->Unindent(Amount); } LinePrinter *L = nullptr; uint32_t Amount = 0; }; template <class T> inline raw_ostream &operator<<(LinePrinter &Printer, const T &Item) { return Printer.getStream() << Item; } enum class PDB_ColorItem { None, Address, Type, Comment, Padding, Keyword, Offset, Identifier, Path, SectionHeader, LiteralValue, Register, }; class WithColor { public: WithColor(LinePrinter &P, PDB_ColorItem C); ~WithColor(); raw_ostream &get() { return OS; } private: void applyColor(PDB_ColorItem C); raw_ostream &OS; bool UseColor; }; } } #endif
Upload File
Create Folder