]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm/include/llvm/DebugInfo/PDB/Native/ModStream.h
Merge llvm, clang, lld, lldb, compiler-rt and libc++ r301441, and update
[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   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