Go to the source code of this file.
Typedefs | |
typedef struct hashTable_s * | hashTable |
typedef uint32_t(* | hashFunctionType )(uint32_t h, const void *data, size_t size) |
Return hash value. | |
typedef int(* | hashEqualityType )(const void *key1, const void *key2) |
Compare two hash table entries for equality. | |
Functions | |
hashTable | htCreate (int numBuckets, size_t keySize, int freeData, hashFunctionType fn, hashEqualityType eq) |
Create hash table. | |
hashTable | htFree (hashTable ht) |
Destroy hash table. | |
void | htAddEntry (hashTable ht, const void *key, const void *data) |
Add item to hash table. | |
int | htGetEntry (hashTable ht, const void *key, const void *data, int *dataCount, const void *tableKey) |
Retrieve item from hash table. | |
int | htHasEntry (hashTable ht, const void *key) |
Check for key in hash table. |
Definition in file rpmhash.h.
typedef int(* hashEqualityType)(const void *key1, const void *key2) |
typedef uint32_t(* hashFunctionType)(uint32_t h, const void *data, size_t size) |
typedef struct hashTable_s* hashTable |
void htAddEntry | ( | hashTable | ht, | |
const void * | key, | |||
const void * | data | |||
) |
Add item to hash table.
ht | pointer to hash table | |
key | pointer to key | |
data | pointer to data value |
Definition at line 177 of file rpmhash.c.
References hashTable_s::buckets, hashBucket_s::data, hashBucket_s::dataCount, hashTable_s::eq, hashTable_s::fn, hashBucket_s::key, hashTable_s::keySize, hashBucket_s::next, hashTable_s::numBuckets, xmalloc(), and xrealloc().
Referenced by doLookup(), and rpmtsRun().
hashTable htCreate | ( | int | numBuckets, | |
size_t | keySize, | |||
int | freeData, | |||
hashFunctionType | fn, | |||
hashEqualityType | eq | |||
) |
Create hash table.
If keySize > 0, the key is duplicated within the table (which costs memory, but may be useful anyway.
numBuckets | number of hash buckets | |
keySize | size of key (0 if unknown) | |
freeData | Should data be freed when table is destroyed? | |
fn | function to generate hash key (NULL for default) | |
eq | function to compare keys for equality (NULL for default) |
Definition at line 159 of file rpmhash.c.
References hashTable_s::buckets, hashTable_s::eq, hashTable_s::fn, hashTable_s::freeData, hashEqualityString(), hashFunctionString(), hashTable_s::keySize, hashTable_s::numBuckets, xcalloc(), and xmalloc().
Referenced by fpCacheCreate(), and rpmtsRun().
Destroy hash table.
ht | pointer to hash table |
Definition at line 207 of file rpmhash.c.
References _free(), hashTable_s::buckets, hashBucket_s::data, hashTable_s::freeData, hashBucket_s::key, hashTable_s::keySize, hashBucket_s::next, and hashTable_s::numBuckets.
Referenced by fpCacheFree(), and rpmtsRun().
int htGetEntry | ( | hashTable | ht, | |
const void * | key, | |||
const void * | data, | |||
int * | dataCount, | |||
const void * | tableKey | |||
) |
Retrieve item from hash table.
ht | pointer to hash table | |
key | pointer to key value |
*data | data value from bucket | |
*dataCount | data value size from bucket | |
*tableKey | key value from bucket (may be NULL) |
Definition at line 242 of file rpmhash.c.
References hashBucket_s::data, hashBucket_s::dataCount, findEntry(), and hashBucket_s::key.
Referenced by cacheContainsDirectory(), and handleOverlappedFiles().
int htHasEntry | ( | hashTable | ht, | |
const void * | key | |||
) |
Check for key in hash table.
ht | pointer to hash table | |
key | pointer to key value |
Definition at line 235 of file rpmhash.c.
References findEntry().