LLVM API Documentation
Provides lookup and iteration over an on disk hash table. More...
#include <OnDiskHashTable.h>
Provides lookup and iteration over an on disk hash table.
This needs an Info
that handles reading values from the hash table's payload and computes the hash for a given key. This should provide the following interface:
class ExampleLookupInfo { public: typedef ExampleData data_type; typedef ExampleInternalKey internal_key_type; // The stored key type. typedef ExampleKey external_key_type; // The type to pass to find(). typedef uint32_t hash_value_type; // The type the hash function returns. typedef uint32_t offset_type; // The type for offsets into the table. /// Compare two keys for equality. static bool EqualKey(internal_key_type &Key1, internal_key_type &Key2); /// Calculate the hash for the given key. static hash_value_type ComputeHash(internal_key_type &IKey); /// Translate from the semantic type of a key in the hash table to the /// type that is actually stored and used for hashing and comparisons. /// The internal and external types are often the same, in which case this /// can simply return the passed in value. static const internal_key_type &GetInternalKey(external_key_type &EKey); /// Read the key and data length from Buffer, leaving it pointing at the /// following byte. static std::pair<offset_type, offset_type> ReadKeyDataLength(const unsigned char *&Buffer); /// Read the key from Buffer, given the KeyLen as reported from /// ReadKeyDataLength. const internal_key_type &ReadKey(const unsigned char *Buffer, offset_type KeyLen); /// Read the data for Key from Buffer, given the DataLen as reported from /// ReadKeyDataLength. data_type ReadData(StringRef Key, const unsigned char *Buffer, offset_type DataLen); };
Definition at line 374 of file OnDiskHashTable.h.
typedef OnDiskChainedHashTable<Info> llvm::OnDiskIterableChainedHashTable< Info >::base_type |
Definition at line 378 of file OnDiskHashTable.h.
typedef base_type::data_type llvm::OnDiskIterableChainedHashTable< Info >::data_type |
Reimplemented from llvm::OnDiskChainedHashTable< Info >.
Definition at line 381 of file OnDiskHashTable.h.
typedef base_type::external_key_type llvm::OnDiskIterableChainedHashTable< Info >::external_key_type |
Reimplemented from llvm::OnDiskChainedHashTable< Info >.
Definition at line 380 of file OnDiskHashTable.h.
typedef base_type::hash_value_type llvm::OnDiskIterableChainedHashTable< Info >::hash_value_type |
Reimplemented from llvm::OnDiskChainedHashTable< Info >.
Definition at line 382 of file OnDiskHashTable.h.
typedef base_type::internal_key_type llvm::OnDiskIterableChainedHashTable< Info >::internal_key_type |
Reimplemented from llvm::OnDiskChainedHashTable< Info >.
Definition at line 379 of file OnDiskHashTable.h.
typedef base_type::offset_type llvm::OnDiskIterableChainedHashTable< Info >::offset_type |
Reimplemented from llvm::OnDiskChainedHashTable< Info >.
Definition at line 383 of file OnDiskHashTable.h.
llvm::OnDiskIterableChainedHashTable< Info >::OnDiskIterableChainedHashTable | ( | offset_type | NumBuckets, |
offset_type | NumEntries, | ||
const unsigned char * | Buckets, | ||
const unsigned char * | Payload, | ||
const unsigned char * | Base, | ||
const Info & | InfoObj = Info() |
||
) | [inline] |
Definition at line 385 of file OnDiskHashTable.h.
static OnDiskIterableChainedHashTable* llvm::OnDiskIterableChainedHashTable< Info >::Create | ( | const unsigned char * | Buckets, |
const unsigned char *const | Payload, | ||
const unsigned char *const | Base, | ||
const Info & | InfoObj = Info() |
||
) | [inline, static] |
Create the hash table.
Buckets | is the beginning of the hash table itself, which follows the payload of entire structure. This is the value returned by OnDiskHashTableGenerator::Emit. |
Payload | is the beginning of the data contained in the table. This is Base plus any padding or header data that was stored, ie, the offset that the stream was at when calling Emit. |
Base | is the point from which all offsets into the structure are based. This is offset 0 in the stream that was used when Emitting the table. |
Definition at line 553 of file OnDiskHashTable.h.
Referenced by llvm::IndexedInstrProfReader::readHeader().
iterator_range<data_iterator> llvm::OnDiskIterableChainedHashTable< Info >::data | ( | ) | [inline] |
Definition at line 535 of file OnDiskHashTable.h.
References llvm::make_range().
data_iterator llvm::OnDiskIterableChainedHashTable< Info >::data_begin | ( | ) | [inline] |
Definition at line 530 of file OnDiskHashTable.h.
data_iterator llvm::OnDiskIterableChainedHashTable< Info >::data_end | ( | ) | [inline] |
Definition at line 533 of file OnDiskHashTable.h.
key_iterator llvm::OnDiskIterableChainedHashTable< Info >::key_begin | ( | ) | [inline] |
Definition at line 457 of file OnDiskHashTable.h.
key_iterator llvm::OnDiskIterableChainedHashTable< Info >::key_end | ( | ) | [inline] |
Definition at line 460 of file OnDiskHashTable.h.
iterator_range<key_iterator> llvm::OnDiskIterableChainedHashTable< Info >::keys | ( | ) | [inline] |
Definition at line 462 of file OnDiskHashTable.h.
References llvm::make_range().