1 //===- C13DebugFragmentVisitor.h - Visitor for CodeView Info ----*- C++ -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 #ifndef LLVM_TOOLS_LLVMPDBDUMP_C13DEBUGFRAGMENTVISITOR_H
11 #define LLVM_TOOLS_LLVMPDBDUMP_C13DEBUGFRAGMENTVISITOR_H
13 #include "llvm/ADT/Optional.h"
14 #include "llvm/DebugInfo/CodeView/DebugChecksumsSubsection.h"
15 #include "llvm/DebugInfo/CodeView/DebugSubsectionVisitor.h"
16 #include "llvm/Support/Error.h"
26 class C13DebugFragmentVisitor : public codeview::DebugSubsectionVisitor {
28 C13DebugFragmentVisitor(PDBFile &F);
29 ~C13DebugFragmentVisitor();
31 Error visitUnknown(codeview::DebugUnknownSubsectionRef &Fragment) final;
34 visitFileChecksums(codeview::DebugChecksumsSubsectionRef &Checksums) final;
36 Error visitLines(codeview::DebugLinesSubsectionRef &Lines) final;
39 visitInlineeLines(codeview::DebugInlineeLinesSubsectionRef &Lines) final;
41 Error finished() final;
44 virtual Error handleFileChecksums() { return Error::success(); }
45 virtual Error handleLines() { return Error::success(); }
46 virtual Error handleInlineeLines() { return Error::success(); }
48 Expected<StringRef> getNameFromStringTable(uint32_t Offset);
49 Expected<StringRef> getNameFromChecksumsBuffer(uint32_t Offset);
51 Optional<codeview::DebugChecksumsSubsectionRef> Checksums;
52 std::vector<codeview::DebugInlineeLinesSubsectionRef> InlineeLines;
53 std::vector<codeview::DebugLinesSubsectionRef> Lines;