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_RAW_PDBSYMBOLSTREAM_H 10#define LLVM_DEBUGINFO_PDB_RAW_PDBSYMBOLSTREAM_H 11 12#include "llvm/DebugInfo/CodeView/SymbolRecord.h" 13 14#include "llvm/Support/Error.h" 15 16namespace llvm { 17namespace msf { 18class MappedBlockStream; 19} 20namespace pdb { 21class PDBFile; 22 23class SymbolStream { 24public: 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 40private: 41 codeview::CVSymbolArray SymbolRecords; 42 std::unique_ptr<msf::MappedBlockStream> Stream; 43}; 44} 45} 46 47#endif 48