TRF Language Model
|
linear hash, using 'open address' to handle collision More...
#include <iostream>
#include <cstring>
#include <cmath>
Go to the source code of this file.
Classes | |
class | wb::LHash< KeyT, DataT > |
a linear hash table More... | |
class | wb::LHashIter< KeyT, DataT > |
the iter of LHash More... | |
class | wb::LHash< KeyT, DataT > |
a linear hash table More... | |
struct | wb::LHash< KeyT, DataT >::Unit |
the Unit of hash More... | |
class | wb::LHashIter< KeyT, DataT > |
the iter of LHash More... | |
Namespaces | |
wb | |
define all the code written by Bin Wang. | |
Macros | |
#define | Bit2Size(bits) ( (int)(1<<(bits)) ) |
#define | HashMask(nbits) (~((~0L)<<(nbits))) |
Functions | |
template<class KeyT > | |
KeyT | wb::Map_copyKey (KeyT key) |
Copy a key. More... | |
const char * | wb::Map_copyKey (const char *key) |
Copy a string key. More... | |
template<class KeyT > | |
void | wb::Map_freeKey (KeyT key) |
Free a key. More... | |
void | wb::Map_freeKey (const char *key) |
Free a key, if the key is string. More... | |
set key to no-key | |
template<class KeyT > | |
void | wb::Map_noKey (KeyT *&key) |
void | wb::Map_noKey (int &key) |
void | wb::Map_noKey (short int &key) |
void | wb::Map_noKey (long int &key) |
void | wb::Map_noKey (long long &key) |
void | wb::Map_noKey (unsigned &key) |
void | wb::Map_noKey (short unsigned &key) |
void | wb::Map_noKey (long unsigned &key) |
void | wb::Map_noKey (float &key) |
void | wb::Map_noKey (double &key) |
no-key detection | |
detect if the key is no-key | |
template<class KeyT > | |
bool | wb::Map_noKeyP (KeyT *key) |
bool | wb::Map_noKeyP (int key) |
bool | wb::Map_noKeyP (short int key) |
bool | wb::Map_noKeyP (long int key) |
bool | wb::Map_noKeyP (long long key) |
bool | wb::Map_noKeyP (unsigned key) |
bool | wb::Map_noKeyP (short unsigned key) |
bool | wb::Map_noKeyP (long unsigned key) |
bool | wb::Map_noKeyP (float key) |
bool | wb::Map_noKeyP (double &key) |
Compare two Keys | |
Return if the input keys are equal. | |
template<class KeyT > | |
bool | wb::Map_equalKey (KeyT key1, KeyT key2) |
bool | wb::Map_equalKey (float key1, float key2) |
bool | wb::Map_equalKey (double key1, double key2) |
bool | wb::Map_equalKey (const char *pStr1, const char *pStr2) |
HashKey | |
Hashing functions. (We provide versions for integral types and char strings; user has to add more specialized definitions.) | |
unsigned long | wb::LHash_hashKey (unsigned long key, unsigned maxBits) |
template<class KeyT > | |
unsigned long | wb::LHash_hashKey (KeyT *key, unsigned maxBits) |
hash for pointer More... | |
unsigned long | wb::LHash_hashKey (int key, unsigned maxBits) |
hash for integral More... | |
unsigned long | wb::LHash_hashKey (float key, unsigned maxBits) |
hash for float More... | |
unsigned long | wb::LHash_hashKey (double key, unsigned maxBits) |
hash for double More... | |
unsigned long | wb::LHash_hashKey (const char *key, unsigned maxBits) |
hash for string More... | |
SortFunction | |
sort function for LHashIter | |
template<class KeyT > | |
bool | wb::LHash_IncSort (KeyT k1, KeyT k2) |
bool | wb::LHash_IncSort (const char *p1, const char *p2) |
Variables | |
const int | wb::cn_MinLHashBits = 3 |
if the bits of hash less than this value, using linear table More... | |
const int | wb::cn_MaxLHashBits = 31 |
the maximum bits number support by hast More... | |
const float | wb::cf_HashRatio = 0.8f |
fill-rate of the hash. More... | |
no-key values | |
| |
const short | wb::c_ShortNokeyValue = (short)(1u << (sizeof(short) * 8 - 1)) |
nokey value for short More... | |
const int | wb::c_IntNokeyValue = (int)(1u << (sizeof(int) * 8 - 1)) |
nokey value for int More... | |
const long | wb::c_LongNokeyValue = (long)(1uL << (sizeof(long) * 8 - 1)) |
nokey value for long More... | |
const long long | wb::c_LLongNokeyValue = (long long)(1LL << (sizeof(long long) * 8 - 1)) |
nokey value for longlong More... | |
const short unsigned | wb::c_UShortNokeyValue = ~(short unsigned)0 |
nokey value for unsigned short More... | |
const unsigned | wb::c_UIntNokeyValue = ~(unsigned)0 |
nokey value for unsigned int More... | |
const long unsigned | wb::c_ULongNokeyValue = ~(long unsigned)0 |
nokey value for unsigned long More... | |
const float | wb::c_floatNokeyValue = 1e15 |
nokey value for float More... | |
const double | wb::c_doubleNokeyValue = 1e20 |
nokey value for double More... | |
#define Bit2Size | ( | bits | ) | ( (int)(1<<(bits)) ) |
Definition at line 34 of file wb-lhash.h.
#define HashMask | ( | nbits | ) | (~((~0L)<<(nbits))) |
Definition at line 121 of file wb-lhash.h.