// dnlib: See LICENSE.txt for more info
using dnlib.IO;
namespace dnlib.DotNet.MD {
///
/// #Pdb stream
///
public sealed class PdbStream : HeapStream {
///
/// Gets the PDB id
///
public byte[] Id { get; private set; }
///
/// Gets the entry point token or 0
///
public MDToken EntryPoint { get; private set; }
///
/// Gets the referenced type system tables in the PE metadata file
///
public ulong ReferencedTypeSystemTables { get; private set; }
///
/// Gets all type system table rows. This array has exactly 64 elements.
///
public uint[] TypeSystemTableRows { get; private set; }
///
public PdbStream(DataReaderFactory mdReaderFactory, uint metadataBaseOffset, StreamHeader streamHeader)
: base(mdReaderFactory, metadataBaseOffset, streamHeader) {
var reader = CreateReader();
Id = reader.ReadBytes(20);
EntryPoint = new MDToken(reader.ReadUInt32());
var tables = reader.ReadUInt64();
ReferencedTypeSystemTables = tables;
var rows = new uint[64];
for (int i = 0; i < rows.Length; i++, tables >>= 1) {
if (((uint)tables & 1) != 0)
rows[i] = reader.ReadUInt32();
}
TypeSystemTableRows = rows;
}
}
}