1317017Sdim//===- SymbolStream.cpp - PDB Symbol Stream Access --------------*- C++ -*-===//
2317017Sdim//
3353358Sdim// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4353358Sdim// See https://llvm.org/LICENSE.txt for license information.
5353358Sdim// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6317017Sdim//
7317017Sdim//===----------------------------------------------------------------------===//
8317017Sdim
9317017Sdim#ifndef LLVM_DEBUGINFO_PDB_RAW_PDBSYMBOLSTREAM_H
10317017Sdim#define LLVM_DEBUGINFO_PDB_RAW_PDBSYMBOLSTREAM_H
11317017Sdim
12317017Sdim#include "llvm/DebugInfo/CodeView/SymbolRecord.h"
13317017Sdim
14317017Sdim#include "llvm/Support/Error.h"
15317017Sdim
16317017Sdimnamespace llvm {
17317017Sdimnamespace msf {
18317017Sdimclass MappedBlockStream;
19317017Sdim}
20317017Sdimnamespace pdb {
21317017Sdimclass PDBFile;
22317017Sdim
23317017Sdimclass SymbolStream {
24317017Sdimpublic:
25317017Sdim  SymbolStream(std::unique_ptr<msf::MappedBlockStream> Stream);
26317017Sdim  ~SymbolStream();
27317017Sdim  Error reload();
28317017Sdim
29320041Sdim  const codeview::CVSymbolArray &getSymbolArray() const {
30320041Sdim    return SymbolRecords;
31320041Sdim  }
32320041Sdim
33327952Sdim  codeview::CVSymbol readRecord(uint32_t Offset) const;
34327952Sdim
35317017Sdim  iterator_range<codeview::CVSymbolArray::Iterator>
36317017Sdim  getSymbols(bool *HadError) const;
37317017Sdim
38317017Sdim  Error commit();
39317017Sdim
40317017Sdimprivate:
41317017Sdim  codeview::CVSymbolArray SymbolRecords;
42317017Sdim  std::unique_ptr<msf::MappedBlockStream> Stream;
43317017Sdim};
44317017Sdim}
45317017Sdim}
46317017Sdim
47317017Sdim#endif
48