Line data Source code
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 :
13 : #include "llvm/ADT/iterator_range.h"
14 : #include "llvm/DebugInfo/CodeView/CVRecord.h"
15 : #include "llvm/DebugInfo/CodeView/ModuleSubstream.h"
16 : #include "llvm/DebugInfo/CodeView/SymbolRecord.h"
17 : #include "llvm/DebugInfo/MSF/MappedBlockStream.h"
18 : #include "llvm/DebugInfo/MSF/StreamArray.h"
19 : #include "llvm/DebugInfo/MSF/StreamRef.h"
20 : #include "llvm/Support/Error.h"
21 :
22 : namespace llvm {
23 : namespace pdb {
24 : class PDBFile;
25 : class ModInfo;
26 :
27 12 : 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 :
37 : iterator_range<codeview::CVSymbolArray::Iterator>
38 : symbols(bool *HadError) const;
39 :
40 : iterator_range<codeview::ModuleSubstreamArray::Iterator>
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 :
57 : codeview::ModuleSubstreamArray LineInfo;
58 : };
59 : }
60 : }
61 :
62 : #endif
|