LLVM API Documentation
Provides lookup on an on disk hash table. More...
#include <OnDiskHashTable.h>
Classes | |
class | iterator |
Public Types | |
typedef Info::internal_key_type | internal_key_type |
typedef Info::external_key_type | external_key_type |
typedef Info::data_type | data_type |
typedef Info::hash_value_type | hash_value_type |
typedef Info::offset_type | offset_type |
Public Member Functions | |
OnDiskChainedHashTable (offset_type NumBuckets, offset_type NumEntries, const unsigned char *Buckets, const unsigned char *Base, const Info &InfoObj=Info()) | |
offset_type | getNumBuckets () const |
offset_type | getNumEntries () const |
const unsigned char * | getBase () const |
const unsigned char * | getBuckets () const |
bool | isEmpty () const |
iterator | find (const external_key_type &EKey, Info *InfoPtr=0) |
Look up the stored data for a particular key. | |
iterator | end () const |
Info & | getInfoObj () |
Static Public Member Functions | |
static OnDiskChainedHashTable * | Create (const unsigned char *Buckets, const unsigned char *const Base, const Info &InfoObj=Info()) |
Create the hash table. |
Provides lookup on 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 237 of file OnDiskHashTable.h.
typedef Info::data_type llvm::OnDiskChainedHashTable< Info >::data_type |
Reimplemented in llvm::OnDiskIterableChainedHashTable< Info >.
Definition at line 247 of file OnDiskHashTable.h.
typedef Info::external_key_type llvm::OnDiskChainedHashTable< Info >::external_key_type |
Reimplemented in llvm::OnDiskIterableChainedHashTable< Info >.
Definition at line 246 of file OnDiskHashTable.h.
typedef Info::hash_value_type llvm::OnDiskChainedHashTable< Info >::hash_value_type |
Reimplemented in llvm::OnDiskIterableChainedHashTable< Info >.
Definition at line 248 of file OnDiskHashTable.h.
typedef Info::internal_key_type llvm::OnDiskChainedHashTable< Info >::internal_key_type |
Reimplemented in llvm::OnDiskIterableChainedHashTable< Info >.
Definition at line 245 of file OnDiskHashTable.h.
typedef Info::offset_type llvm::OnDiskChainedHashTable< Info >::offset_type |
Reimplemented in llvm::OnDiskIterableChainedHashTable< Info >.
Definition at line 249 of file OnDiskHashTable.h.
llvm::OnDiskChainedHashTable< Info >::OnDiskChainedHashTable | ( | offset_type | NumBuckets, |
offset_type | NumEntries, | ||
const unsigned char * | Buckets, | ||
const unsigned char * | Base, | ||
const Info & | InfoObj = Info() |
||
) | [inline] |
Definition at line 251 of file OnDiskHashTable.h.
static OnDiskChainedHashTable* llvm::OnDiskChainedHashTable< Info >::Create | ( | const unsigned char * | Buckets, |
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. |
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 353 of file OnDiskHashTable.h.
iterator llvm::OnDiskChainedHashTable< Info >::end | ( | ) | const [inline] |
Definition at line 340 of file OnDiskHashTable.h.
iterator llvm::OnDiskChainedHashTable< Info >::find | ( | const external_key_type & | EKey, |
Info * | InfoPtr = 0 |
||
) | [inline] |
Look up the stored data for a particular key.
Definition at line 286 of file OnDiskHashTable.h.
References llvm::X.
const unsigned char* llvm::OnDiskChainedHashTable< Info >::getBase | ( | ) | const [inline] |
Definition at line 263 of file OnDiskHashTable.h.
const unsigned char* llvm::OnDiskChainedHashTable< Info >::getBuckets | ( | ) | const [inline] |
Definition at line 264 of file OnDiskHashTable.h.
Info& llvm::OnDiskChainedHashTable< Info >::getInfoObj | ( | ) | [inline] |
Definition at line 342 of file OnDiskHashTable.h.
offset_type llvm::OnDiskChainedHashTable< Info >::getNumBuckets | ( | ) | const [inline] |
Definition at line 261 of file OnDiskHashTable.h.
offset_type llvm::OnDiskChainedHashTable< Info >::getNumEntries | ( | ) | const [inline] |
Definition at line 262 of file OnDiskHashTable.h.
bool llvm::OnDiskChainedHashTable< Info >::isEmpty | ( | ) | const [inline] |
Definition at line 266 of file OnDiskHashTable.h.