//===- GlobalsStream.h - PDB Index of Symbols by Name -----------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #ifndef LLVM_DEBUGINFO_PDB_NATIVE_GLOBALSSTREAM_H #define LLVM_DEBUGINFO_PDB_NATIVE_GLOBALSSTREAM_H #include "llvm/ADT/iterator.h" #include "llvm/DebugInfo/CodeView/CVRecord.h" #include "llvm/DebugInfo/PDB/Native/RawTypes.h" #include "llvm/Support/BinaryStreamArray.h" #include "llvm/Support/Endian.h" #include "llvm/Support/Error.h" namespace llvm { class BinaryStreamReader; namespace msf { class MappedBlockStream; } namespace pdb { class SymbolStream; /// Iterator over hash records producing symbol record offsets. Abstracts away /// the fact that symbol record offsets on disk are off-by-one. class GSIHashIterator : public iterator_adaptor_base< GSIHashIterator, FixedStreamArrayIterator<PSHashRecord>, std::random_access_iterator_tag, const uint32_t> { … }; /// From https://github.com/Microsoft/microsoft-pdb/blob/master/PDB/dbi/gsi.cpp enum : unsigned { … }; /// A readonly view of a hash table used in the globals and publics streams. /// Most clients will only want to iterate this to get symbol record offsets /// into the PDB symbol stream. class GSIHashTable { … }; class GlobalsStream { … }; } // namespace pdb } #endif