rpm
5.4.14
|
Hash table implemenation. More...
#include <rpmiotypes.h>
Go to the source code of this file.
Macros | |
#define | htUnlink(_ht) ((hashTable)rpmioUnlinkPoolItem((rpmioItem)(_ht), __FUNCTION__, __FILE__, __LINE__)) |
#define | htLink(_ht) ((hashTable)rpmioLinkPoolItem((rpmioItem)(_ht), __FUNCTION__, __FILE__, __LINE__)) |
#define | htFree(_ht) ((hashTable)rpmioFreePoolItem((rpmioItem)(_ht), __FUNCTION__, __FILE__, __LINE__)) |
Typedefs | |
typedef struct hashTable_s * | hashTable |
typedef int(* | hashEqualityType )(const void *key1, const void *key2) |
Compare two hash table entries for equality. More... | |
typedef rpmuint32_t(* | hashFunctionType )(rpmuint32_t h, const void *data, size_t size) |
Return hash value. More... | |
Functions | |
int | hashEqualityString (const void *key1, const void *key2) |
Compare two hash table entries for equality. More... | |
rpmuint32_t | hashFunctionString (rpmuint32_t h, const void *data, size_t size) |
Return hash value of a string. More... | |
void | htAddEntry (hashTable ht, const void *key, const void *data) |
Add item to hash table. More... | |
int | htGetEntry (hashTable ht, const void *key, const void *data, int *dataCount, const void *tableKey) |
Retrieve item from hash table. More... | |
const void ** | htGetKeys (hashTable ht) |
Retrieve keys from hash table. More... | |
int | htHasEntry (hashTable ht, const void *key) |
Check for key in hash table. More... | |
hashTable | htUnlink (hashTable ht) |
Unreference a hash table instance. More... | |
hashTable | htLink (hashTable ht) |
Reference a hash table instance. More... | |
hashTable | htFree (hashTable ht) |
Destroy hash table. More... | |
hashTable | htCreate (int numBuckets, size_t keySize, int freeData, hashFunctionType fn, hashEqualityType eq) |
Create hash table. More... | |
Hash table implemenation.
Definition in file rpmhash.h.
#define htFree | ( | _ht | ) | ((hashTable)rpmioFreePoolItem((rpmioItem)(_ht), __FUNCTION__, __FILE__, __LINE__)) |
#define htLink | ( | _ht | ) | ((hashTable)rpmioLinkPoolItem((rpmioItem)(_ht), __FUNCTION__, __FILE__, __LINE__)) |
#define htUnlink | ( | _ht | ) | ((hashTable)rpmioUnlinkPoolItem((rpmioItem)(_ht), __FUNCTION__, __FILE__, __LINE__)) |
typedef rpmuint32_t(* hashFunctionType)(rpmuint32_t h, const void *data, size_t size) |
typedef struct hashTable_s* hashTable |
Compare two hash table entries for equality.
key1 | entry 1 |
key2 | entry 2 |
Definition at line 76 of file rpmhash.c.
References strcmp().
Referenced by htCreate().
rpmuint32_t hashFunctionString | ( | rpmuint32_t | h, |
const void * | data, | ||
size_t | size | ||
) |
Return hash value of a string.
h | hash initial value |
data | data on which to calculate hash value |
size | size of data in bytes (0 will use strlen(data)) |
Definition at line 83 of file rpmhash.c.
Referenced by Fstat(), ftpLstat(), ftpStat(), genCpioListAndHeader(), htCreate(), rpmmiGrowBasename(), rpmtsCheckInstalledFiles(), and rpmxarStat().
Add item to hash table.
ht | pointer to hash table |
key | pointer to key |
data | pointer to data value |
Definition at line 150 of file rpmhash.c.
References b, hashTable_s::buckets, hashBucket_s::data, hashBucket_s::dataCount, hashTable_s::eq, hashTable_s::fn, if(), k, hashBucket_s::key, key, hashTable_s::keySize, hashBucket_s::next, NULL, hashTable_s::numBuckets, xmalloc, and xrealloc.
Referenced by doLookup(), fpLookupSubdir(), and rpmtsAddFingerprints().
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 277 of file rpmhash.c.
References hashTable_s::buckets, hashTable_s::eq, hashTable_s::fn, hashTable_s::freeData, hashEqualityString(), hashFunctionString(), htGetPool(), htLink(), hashTable_s::keySize, NULL, hashTable_s::numBuckets, and xcalloc().
Referenced by fpCacheCreate(), rpmtsAddFingerprints(), and rpmtsPrepare().
Destroy hash table.
ht | pointer to hash table |
Referenced by fpCacheFree(), rpmtsAddFingerprints(), and rpmtsPrepare().
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 188 of file rpmhash.c.
References b, hashBucket_s::data, hashBucket_s::dataCount, findEntry(), hashBucket_s::key, and NULL.
Referenced by cacheContainsDirectory(), fpLookupSubdir(), handleOverlappedFiles(), and rpmtsCheckInstalledFiles().
Retrieve keys from hash table.
ht | pointer to hash table |
Definition at line 206 of file rpmhash.c.
References b, hashTable_s::buckets, hashBucket_s::data, i, hashBucket_s::key, keys, n, hashBucket_s::next, NULL, hashTable_s::numBuckets, and xcalloc().
Check for key in hash table.
ht | pointer to hash table |
key | pointer to key value |
Definition at line 181 of file rpmhash.c.
References b, and findEntry().
Reference a hash table instance.
ht | hash table |
Referenced by htCreate().