LLVM API Documentation

Classes | Public Types | Public Member Functions | Static Public Member Functions
llvm::OnDiskChainedHashTable< Info > Class Template Reference

Provides lookup on an on disk hash table. More...

#include <OnDiskHashTable.h>

Inheritance diagram for llvm::OnDiskChainedHashTable< Info >:
Inheritance graph
[legend]

List of all members.

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 OnDiskChainedHashTableCreate (const unsigned char *Buckets, const unsigned char *const Base, const Info &InfoObj=Info())
 Create the hash table.

Detailed Description

template<typename Info>
class llvm::OnDiskChainedHashTable< Info >

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.


Member Typedef Documentation

template<typename Info >
typedef Info::data_type llvm::OnDiskChainedHashTable< Info >::data_type

Reimplemented in llvm::OnDiskIterableChainedHashTable< Info >.

Definition at line 247 of file OnDiskHashTable.h.

template<typename Info >
typedef Info::external_key_type llvm::OnDiskChainedHashTable< Info >::external_key_type

Reimplemented in llvm::OnDiskIterableChainedHashTable< Info >.

Definition at line 246 of file OnDiskHashTable.h.

template<typename Info >
typedef Info::hash_value_type llvm::OnDiskChainedHashTable< Info >::hash_value_type

Reimplemented in llvm::OnDiskIterableChainedHashTable< Info >.

Definition at line 248 of file OnDiskHashTable.h.

template<typename Info >
typedef Info::internal_key_type llvm::OnDiskChainedHashTable< Info >::internal_key_type

Reimplemented in llvm::OnDiskIterableChainedHashTable< Info >.

Definition at line 245 of file OnDiskHashTable.h.

template<typename Info >
typedef Info::offset_type llvm::OnDiskChainedHashTable< Info >::offset_type

Reimplemented in llvm::OnDiskIterableChainedHashTable< Info >.

Definition at line 249 of file OnDiskHashTable.h.


Constructor & Destructor Documentation

template<typename Info >
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.


Member Function Documentation

template<typename Info >
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.

Parameters:
Bucketsis the beginning of the hash table itself, which follows the payload of entire structure. This is the value returned by OnDiskHashTableGenerator::Emit.
Baseis 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.

template<typename Info >
iterator llvm::OnDiskChainedHashTable< Info >::end ( ) const [inline]

Definition at line 340 of file OnDiskHashTable.h.

template<typename Info >
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.

template<typename Info >
const unsigned char* llvm::OnDiskChainedHashTable< Info >::getBase ( ) const [inline]

Definition at line 263 of file OnDiskHashTable.h.

template<typename Info >
const unsigned char* llvm::OnDiskChainedHashTable< Info >::getBuckets ( ) const [inline]

Definition at line 264 of file OnDiskHashTable.h.

template<typename Info >
Info& llvm::OnDiskChainedHashTable< Info >::getInfoObj ( ) [inline]

Definition at line 342 of file OnDiskHashTable.h.

template<typename Info >
offset_type llvm::OnDiskChainedHashTable< Info >::getNumBuckets ( ) const [inline]

Definition at line 261 of file OnDiskHashTable.h.

template<typename Info >
offset_type llvm::OnDiskChainedHashTable< Info >::getNumEntries ( ) const [inline]

Definition at line 262 of file OnDiskHashTable.h.

template<typename Info >
bool llvm::OnDiskChainedHashTable< Info >::isEmpty ( ) const [inline]

Definition at line 266 of file OnDiskHashTable.h.


The documentation for this class was generated from the following file: