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/CVRecord.h" 13 14 #include "llvm/Support/Error.h" 15 16 namespace llvm { 17 namespace msf { 18 class MappedBlockStream; 19 } 20 namespace pdb { 21 22 class SymbolStream { 23 public: 24 SymbolStream(std::unique_ptr<msf::MappedBlockStream> Stream); 25 ~SymbolStream(); 26 Error reload(); 27 getSymbolArray()28 const codeview::CVSymbolArray &getSymbolArray() const { 29 return SymbolRecords; 30 } 31 32 codeview::CVSymbol readRecord(uint32_t Offset) const; 33 34 iterator_range<codeview::CVSymbolArray::Iterator> 35 getSymbols(bool *HadError) const; 36 37 Error commit(); 38 39 private: 40 codeview::CVSymbolArray SymbolRecords; 41 std::unique_ptr<msf::MappedBlockStream> Stream; 42 }; 43 } // namespace pdb 44 } 45 46 #endif 47