LLVM  4.0.0
ModStream.h
Go to the documentation of this file.
1 //===- ModStream.h - PDB Module Info Stream Access ------------------------===//
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 
10 #ifndef LLVM_DEBUGINFO_PDB_RAW_MODSTREAM_H
11 #define LLVM_DEBUGINFO_PDB_RAW_MODSTREAM_H
12 
20 #include "llvm/Support/Error.h"
21 
22 namespace llvm {
23 namespace pdb {
24 class PDBFile;
25 class ModInfo;
26 
27 class ModStream {
28 public:
29  ModStream(const ModInfo &Module,
30  std::unique_ptr<msf::MappedBlockStream> Stream);
31  ~ModStream();
32 
33  Error reload();
34 
35  uint32_t signature() const { return Signature; }
36 
38  symbols(bool *HadError) const;
39 
41  lines(bool *HadError) const;
42 
43  Error commit();
44 
45 private:
46  const ModInfo &Mod;
47 
48  uint32_t Signature;
49 
50  std::unique_ptr<msf::MappedBlockStream> Stream;
51 
52  codeview::CVSymbolArray SymbolsSubstream;
53  msf::ReadableStreamRef LinesSubstream;
54  msf::ReadableStreamRef C13LinesSubstream;
55  msf::ReadableStreamRef GlobalRefsSubstream;
56 
58 };
59 }
60 }
61 
62 #endif
A Module instance is used to store all the information related to an LLVM module. ...
Definition: Module.h:52
This provides a very simple, boring adaptor for a begin and end iterator into a range type...
iterator_range< codeview::ModuleSubstreamArray::Iterator > lines(bool *HadError) const
Definition: ModStream.cpp:81
ModStream(const ModInfo &Module, std::unique_ptr< msf::MappedBlockStream > Stream)
Definition: ModStream.cpp:27
A range adaptor for a pair of iterators.
uint32_t signature() const
Definition: ModStream.h:35
Lightweight error class with error context and mandatory checking.
iterator_range< codeview::CVSymbolArray::Iterator > symbols(bool *HadError) const
Definition: ModStream.cpp:73