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/Support/BinaryStreamArray.h"
19 : #include "llvm/Support/BinaryStreamRef.h"
20 : #include "llvm/Support/Error.h"
21 :
22 : namespace llvm {
23 : namespace pdb {
24 : class PDBFile;
25 : class ModInfo;
26 :
27 22 : 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 : bool hasLineInfo() const;
44 :
45 : Error commit();
46 :
47 : private:
48 : const ModInfo &Mod;
49 :
50 : uint32_t Signature;
51 :
52 : std::unique_ptr<msf::MappedBlockStream> Stream;
53 :
54 : codeview::CVSymbolArray SymbolsSubstream;
55 : BinaryStreamRef LinesSubstream;
56 : BinaryStreamRef C13LinesSubstream;
57 : BinaryStreamRef GlobalRefsSubstream;
58 :
59 : codeview::ModuleSubstreamArray LineInfo;
60 : };
61 : }
62 : }
63 :
64 : #endif
|