1 //===- SymbolStream.cpp - PDB Symbol Stream Access --------------*- C++ -*-===// 2 // 3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4 // See https://llvm.org/LICENSE.txt for license information. 5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6 // 7 //===----------------------------------------------------------------------===// 8 9 #ifndef LLVM_DEBUGINFO_PDB_NATIVE_SYMBOLSTREAM_H 10 #define LLVM_DEBUGINFO_PDB_NATIVE_SYMBOLSTREAM_H 11 12 #include "llvm/DebugInfo/CodeView/SymbolRecord.h" 13 14 #include "llvm/Support/Error.h" 15 16 namespace llvm { 17 namespace msf { 18 class MappedBlockStream; 19 } 20 namespace pdb { 21 class PDBFile; 22 23 class SymbolStream { 24 public: 25 SymbolStream(std::unique_ptr<msf::MappedBlockStream> Stream); 26 ~SymbolStream(); 27 Error reload(); 28 29 const codeview::CVSymbolArray &getSymbolArray() const { 30 return SymbolRecords; 31 } 32 33 codeview::CVSymbol readRecord(uint32_t Offset) const; 34 35 iterator_range<codeview::CVSymbolArray::Iterator> 36 getSymbols(bool *HadError) const; 37 38 Error commit(); 39 40 private: 41 codeview::CVSymbolArray SymbolRecords; 42 std::unique_ptr<msf::MappedBlockStream> Stream; 43 }; 44 } 45 } 46 47 #endif 48