1317017Sdim//===- PublicsStream.h - PDB Public Symbol Stream -------- ------*- 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_PUBLICSSTREAM_H
10317017Sdim#define LLVM_DEBUGINFO_PDB_RAW_PUBLICSSTREAM_H
11317017Sdim
12317017Sdim#include "llvm/DebugInfo/CodeView/SymbolRecord.h"
13317017Sdim#include "llvm/DebugInfo/MSF/MappedBlockStream.h"
14327952Sdim#include "llvm/DebugInfo/PDB/Native/GlobalsStream.h"
15317017Sdim#include "llvm/DebugInfo/PDB/Native/RawConstants.h"
16317017Sdim#include "llvm/DebugInfo/PDB/Native/RawTypes.h"
17317017Sdim#include "llvm/DebugInfo/PDB/PDBTypes.h"
18317017Sdim#include "llvm/Support/BinaryStreamArray.h"
19317017Sdim#include "llvm/Support/Error.h"
20317017Sdim
21317017Sdimnamespace llvm {
22317017Sdimnamespace pdb {
23317017Sdimclass DbiStream;
24317017Sdimstruct GSIHashHeader;
25317017Sdimclass PDBFile;
26317017Sdim
27317017Sdimclass PublicsStream {
28317017Sdimpublic:
29327952Sdim  PublicsStream(std::unique_ptr<msf::MappedBlockStream> Stream);
30317017Sdim  ~PublicsStream();
31317017Sdim  Error reload();
32317017Sdim
33317017Sdim  uint32_t getSymHash() const;
34327952Sdim  uint16_t getThunkTableSection() const;
35327952Sdim  uint32_t getThunkTableOffset() const;
36327952Sdim  const GSIHashTable &getPublicsTable() const { return PublicsTable; }
37317017Sdim  FixedStreamArray<support::ulittle32_t> getAddressMap() const {
38317017Sdim    return AddressMap;
39317017Sdim  }
40317017Sdim  FixedStreamArray<support::ulittle32_t> getThunkMap() const {
41317017Sdim    return ThunkMap;
42317017Sdim  }
43317017Sdim  FixedStreamArray<SectionOffset> getSectionOffsets() const {
44317017Sdim    return SectionOffsets;
45317017Sdim  }
46317017Sdim
47317017Sdimprivate:
48317017Sdim  std::unique_ptr<msf::MappedBlockStream> Stream;
49327952Sdim  GSIHashTable PublicsTable;
50317017Sdim  FixedStreamArray<support::ulittle32_t> AddressMap;
51317017Sdim  FixedStreamArray<support::ulittle32_t> ThunkMap;
52317017Sdim  FixedStreamArray<SectionOffset> SectionOffsets;
53317017Sdim
54320970Sdim  const PublicsStreamHeader *Header;
55317017Sdim};
56317017Sdim}
57317017Sdim}
58317017Sdim
59317017Sdim#endif
60