1 #ifndef CMR_HASHTABLE_INTERNAL_H
2 #define CMR_HASHTABLE_INTERNAL_H
36 size_t initialKeyMemory
92 size_t initialNumBuckets,
93 size_t initialMemNodes
144 #define RANGE_SIGNED_HASH (LLONG_MAX/2)
CMR_ERROR
Type for return codes of library functions.
Definition: env.h:27
size_t CMRlisthashtableNumBuckets(CMR_LISTHASHTABLE *hashtable)
Definition: hashtable.c:365
CMR_ERROR CMRlisthashtableCreate(CMR *cmr, CMR_LISTHASHTABLE **phashtable, size_t initialNumBuckets, size_t initialMemNodes)
Definition: hashtable.c:264
size_t CMR_LISTHASHTABLE_VALUE
Definition: hashtable.h:84
size_t CMR_LISTHASHTABLE_ENTRY
Definition: hashtable.h:87
size_t CMR_LINEARHASHTABLE_HASH
Definition: hashtable.h:30
CMR_ERROR CMRlinearhashtableArrayInsert(CMR *cmr, CMR_LINEARHASHTABLE_ARRAY *hashtable, const void *keyArray, size_t keyLength, const void *value)
Definition: hashtable.c:228
CMR_ERROR CMRlinearhashtableArrayInsertBucketHash(CMR *cmr, CMR_LINEARHASHTABLE_ARRAY *hashtable, const void *keyArray, size_t keyLength, CMR_LINEARHASHTABLE_BUCKET bucket, CMR_LINEARHASHTABLE_HASH hash, const void *value)
Definition: hashtable.c:145
CMR_ERROR CMRlisthashtableInsert(CMR *cmr, CMR_LISTHASHTABLE *hashtable, CMR_LISTHASHTABLE_HASH hash, CMR_LISTHASHTABLE_VALUE value, CMR_LISTHASHTABLE_ENTRY *pentry)
Inserts value with hash into the hash table, even if an entry with the same hash exists.
Definition: hashtable.c:370
CMR_LISTHASHTABLE_ENTRY CMRlisthashtableFindNext(CMR_LISTHASHTABLE *hashtable, CMR_LISTHASHTABLE_HASH hash, CMR_LISTHASHTABLE_ENTRY entry)
Definition: hashtable.c:334
CMR_LISTHASHTABLE_HASH CMRlisthashtableHash(CMR_LISTHASHTABLE *hashtable, CMR_LISTHASHTABLE_ENTRY entry)
Definition: hashtable.c:358
static size_t nextPower2(size_t x)
Returns the smallest power of 2 at least as large as x.
Definition: hashtable.h:17
size_t CMR_LISTHASHTABLE_BUCKET
Definition: hashtable.h:86
CMR_LISTHASHTABLE_VALUE CMRlisthashtableValue(CMR_LISTHASHTABLE *hashtable, CMR_LISTHASHTABLE_ENTRY entry)
Definition: hashtable.c:351
size_t CMR_LINEARHASHTABLE_BUCKET
Definition: hashtable.h:29
CMR_ERROR CMRlinearhashtableArrayCreate(CMR *cmr, CMR_LINEARHASHTABLE_ARRAY **phashtable, size_t initialSize, size_t initialKeyMemory)
Definition: hashtable.c:41
const void * CMRlinearhashtableArrayValue(CMR_LINEARHASHTABLE_ARRAY *hashtable, CMR_LINEARHASHTABLE_BUCKET bucket)
Definition: hashtable.c:94
CMR_ERROR CMRlisthashtableFree(CMR *cmr, CMR_LISTHASHTABLE **phashtable)
Definition: hashtable.c:294
CMR_ERROR CMRlinearhashtableArrayFree(CMR *cmr, CMR_LINEARHASHTABLE_ARRAY **phashtable)
Definition: hashtable.c:68
static long long projectSignedHash(long long value)
Projects value into the range [-RANGE_SIGNED_HASH, +RANGE_SIGNED_HASH] via a modulo computation.
Definition: hashtable.h:151
#define RANGE_SIGNED_HASH
Definition: hashtable.h:144
CMR_LISTHASHTABLE_ENTRY CMRlisthashtableFindFirst(CMR_LISTHASHTABLE *hashtable, CMR_LISTHASHTABLE_HASH hash)
Definition: hashtable.c:318
size_t CMR_LISTHASHTABLE_HASH
Definition: hashtable.h:85
CMR_ERROR CMRlisthashtableRemove(CMR *cmr, CMR_LISTHASHTABLE *hashtable, CMR_LISTHASHTABLE_ENTRY entry)
Definition: hashtable.c:402
const void * CMRlinearhashtableArrayKey(CMR_LINEARHASHTABLE_ARRAY *hashtable, CMR_LINEARHASHTABLE_BUCKET bucket, size_t *pKeyLength)
Definition: hashtable.c:84
bool CMRlinearhashtableArrayFind(CMR_LINEARHASHTABLE_ARRAY *hashtable, const void *keyArray, size_t keyLength, CMR_LINEARHASHTABLE_BUCKET *pbucket, CMR_LINEARHASHTABLE_HASH *phash)
Definition: hashtable.c:101
Definition: env_internal.h:45
Definition: hashtable.c:22
Definition: hashtable.c:254