21 uint32_t PDBStringTable::getByteSize()
const {
return Header->ByteSize; }
22 uint32_t PDBStringTable::getNameCount()
const {
return NameCount; }
23 uint32_t PDBStringTable::getHashVersion()
const {
return Header->HashVersion; }
31 return make_error<RawError>(raw_error_code::corrupt_file,
32 "Invalid hash table signature");
33 if (Header->HashVersion != 1 && Header->HashVersion != 2)
34 return make_error<RawError>(raw_error_code::corrupt_file,
35 "Unsupported hash version");
46 if (
auto EC = Strings.initialize(Stream)) {
48 make_error<RawError>(raw_error_code::corrupt_file,
49 "Invalid hash table byte length"));
57 PDBStringTable::getStringTable()
const {
66 if (
auto EC = Reader.
readArray(IDs, *HashCount)) {
68 make_error<RawError>(raw_error_code::corrupt_file,
69 "Could not read bucket array"));
88 if (
auto EC = readHeader(SectionReader))
91 std::tie(SectionReader, Reader) = Reader.
split(Header->ByteSize);
92 if (
auto EC = readStrings(SectionReader))
97 if (
auto EC = readHashTable(Reader))
100 std::tie(SectionReader, Reader) = Reader.
split(
sizeof(
uint32_t));
101 if (
auto EC = readEpilogue(SectionReader))
109 return Strings.getString(
ID);
115 size_t Count = IDs.size();
117 for (
size_t I = 0;
I < Count; ++
I) {
126 return make_error<RawError>(raw_error_code::no_entry);
127 auto ExpectedStr = getStringForID(
ID);
129 return ExpectedStr.takeError();
131 if (*ExpectedStr == Str)
134 return make_error<RawError>(raw_error_code::no_entry);