LLVM  4.0.0
ModuleSubstreamVisitor.cpp
Go to the documentation of this file.
1 //===- ModuleSubstreamVisitor.cpp -------------------------------*- C++ -*-===//
2 //
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 
13 
14 using namespace llvm;
15 using namespace llvm::codeview;
16 using namespace llvm::msf;
17 
19  return visitUnknown(ModuleSubstreamKind::Symbols, Data);
20 }
22  const LineSubstreamHeader *Header,
23  const LineInfoArray &Lines) {
24  return visitUnknown(ModuleSubstreamKind::Lines, Data);
25 }
27  return visitUnknown(ModuleSubstreamKind::StringTable, Data);
28 }
30  ReadableStreamRef Data, const FileChecksumArray &Checksums) {
31  return visitUnknown(ModuleSubstreamKind::FileChecksums, Data);
32 }
34  return visitUnknown(ModuleSubstreamKind::FrameData, Data);
35 }
37  return visitUnknown(ModuleSubstreamKind::InlineeLines, Data);
38 }
40  return visitUnknown(ModuleSubstreamKind::CrossScopeExports, Data);
41 }
43  return visitUnknown(ModuleSubstreamKind::CrossScopeImports, Data);
44 }
46  return visitUnknown(ModuleSubstreamKind::ILLines, Data);
47 }
49  return visitUnknown(ModuleSubstreamKind::FuncMDTokenMap, Data);
50 }
52  return visitUnknown(ModuleSubstreamKind::TypeMDTokenMap, Data);
53 }
55  ReadableStreamRef Data) {
56  return visitUnknown(ModuleSubstreamKind::MergedAssemblyInput, Data);
57 }
59  return visitUnknown(ModuleSubstreamKind::CoffSymbolRVA, Data);
60 }
61 
64  switch (R.getSubstreamKind()) {
66  return V.visitSymbols(R.getRecordData());
68  StreamReader Reader(R.getRecordData());
69  const LineSubstreamHeader *Header;
70  if (auto EC = Reader.readObject(Header))
71  return EC;
73  LineInfoArray LineInfos(E);
74  if (auto EC = Reader.readArray(LineInfos, Reader.bytesRemaining()))
75  return EC;
76  return V.visitLines(R.getRecordData(), Header, LineInfos);
77  }
79  return V.visitStringTable(R.getRecordData());
81  StreamReader Reader(R.getRecordData());
82  FileChecksumArray Checksums;
83  if (auto EC = Reader.readArray(Checksums, Reader.bytesRemaining()))
84  return EC;
85  return V.visitFileChecksums(R.getRecordData(), Checksums);
86  }
88  return V.visitFrameData(R.getRecordData());
90  return V.visitInlineeLines(R.getRecordData());
96  return V.visitILLines(R.getRecordData());
98  return V.visitFuncMDTokenMap(R.getRecordData());
100  return V.visitTypeMDTokenMap(R.getRecordData());
104  return V.visitCoffSymbolRVA(R.getRecordData());
105  default:
106  return V.visitUnknown(R.getSubstreamKind(), R.getRecordData());
107  }
108 }
virtual Error visitFileChecksums(msf::ReadableStreamRef Data, const FileChecksumArray &Checksums)
ModuleSubstreamKind getSubstreamKind() const
virtual Error visitMergedAssemblyInput(msf::ReadableStreamRef Data)
virtual Error visitCrossScopeImports(msf::ReadableStreamRef Data)
virtual Error visitCrossScopeExports(msf::ReadableStreamRef Data)
virtual Error visitInlineeLines(msf::ReadableStreamRef Data)
virtual Error visitSymbols(msf::ReadableStreamRef Data)
static GCRegistry::Add< CoreCLRGC > E("coreclr","CoreCLR-compatible GC")
virtual Error visitStringTable(msf::ReadableStreamRef Data)
virtual Error visitUnknown(ModuleSubstreamKind Kind, msf::ReadableStreamRef Data)=0
virtual Error visitTypeMDTokenMap(msf::ReadableStreamRef Data)
Error visitModuleSubstream(const ModuleSubstream &R, IModuleSubstreamVisitor &V)
virtual Error visitILLines(msf::ReadableStreamRef Data)
virtual Error visitFrameData(msf::ReadableStreamRef Data)
virtual Error visitCoffSymbolRVA(msf::ReadableStreamRef Data)
VarStreamArrayExtractor is intended to be specialized to provide customized extraction logic...
Definition: StreamArray.h:35
virtual Error visitFuncMDTokenMap(msf::ReadableStreamRef Data)
msf::ReadableStreamRef getRecordData() const
Lightweight error class with error context and mandatory checking.
virtual Error visitLines(msf::ReadableStreamRef Data, const LineSubstreamHeader *Header, const LineInfoArray &Lines)