]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm/include/llvm/DebugInfo/PDB/Native/ModStream.h
Merge compiler-rt trunk r300890, and update build glue.
[FreeBSD/FreeBSD.git] / contrib / llvm / include / llvm / DebugInfo / PDB / Native / ModStream.h
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 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   BinaryStreamRef LinesSubstream;
54   BinaryStreamRef C13LinesSubstream;
55   BinaryStreamRef GlobalRefsSubstream;
56
57   codeview::ModuleSubstreamArray LineInfo;
58 };
59 }
60 }
61
62 #endif