rpmdb/rpmhash.c File Reference
Hash table implemenation.
More...
#include "system.h"
#include <rpmlib.h>
#include "rpmhash.h"
#include "debug.h"
Go to the source code of this file.
Data Structures |
struct | hashBucket_s |
struct | hashTable_s |
Typedefs |
typedef const void * | voidptr |
typedef struct hashBucket_s * | hashBucket |
Functions |
static hashBucket | findEntry (hashTable ht, const void *key) |
| Find entry in hash table.
|
int | hashEqualityString (const void *key1, const void *key2) |
| Compare two hash table entries for equality.
|
unsigned int | hashFunctionString (const void *string) |
| Return hash value of a string.
|
hashTable | htCreate (int numBuckets, int keySize, int freeData, hashFunctionType fn, hashEqualityType eq) |
| Create hash table.
|
void | htAddEntry (hashTable ht, const void *key, const void *data) |
| Add item to hash table.
|
void | htFree (hashTable ht) |
| Destroy hash table.
|
int | htHasEntry (hashTable ht, const void *key) |
| Check for key in hash table.
|
int | htGetEntry (hashTable ht, const void *key, const void ***data, int *dataCount, const void **tableKey) |
| Retrieve item from hash table.
|
Detailed Description
Hash table implemenation.
Definition in file rpmhash.c.
Typedef Documentation
Function Documentation
Find entry in hash table.
- Parameters:
-
| ht | pointer to hash table |
| key | pointer to key value |
- Returns:
- pointer to hash bucket of key (or NULL)
Definition at line 42 of file rpmhash.c.
int hashEqualityString |
( |
const void * |
key1, |
|
|
const void * |
key2 | |
|
) |
| | |
Compare two hash table entries for equality.
- Parameters:
-
| key1 | entry 1 |
| key2 | entry 2 |
- Returns:
- 0 if entries are equal
Definition at line 59 of file rpmhash.c.
unsigned int hashFunctionString |
( |
const void * |
string |
) |
|
Return hash value of a string.
- Parameters:
-
| string | string on which to calculate hash value |
- Returns:
- hash value
Definition at line 66 of file rpmhash.c.
void htAddEntry |
( |
hashTable |
ht, |
|
|
const void * |
key, |
|
|
const void * |
data | |
|
) |
| | |
Add item to hash table.
- Parameters:
-
| ht | pointer to hash table |
| key | pointer to key |
| data | pointer to data value |
Definition at line 101 of file rpmhash.c.
Create hash table.
If keySize > 0, the key is duplicated within the table (which costs memory, but may be useful anyway.
- Parameters:
-
| 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 value for key |
| eq | function to compare hash keys for equality |
- Returns:
- pointer to initialized hash table
Definition at line 83 of file rpmhash.c.
Destroy hash table.
- Parameters:
-
Definition at line 133 of file rpmhash.c.
int htGetEntry |
( |
hashTable |
ht, |
|
|
const void * |
key, |
|
|
const void *** |
data, |
|
|
int * |
dataCount, |
|
|
const void ** |
tableKey | |
|
) |
| | |
Retrieve item from hash table.
- Parameters:
-
| ht | pointer to hash table |
| key | pointer to key value |
- Return values:
-
| data | address to store data value from bucket |
| dataCount | address to store data value size from bucket |
| tableKey | address to store key value from bucket (may be NULL) |
- Returns:
- 0 on success, 1 if the item is not found.
Definition at line 169 of file rpmhash.c.
int htHasEntry |
( |
hashTable |
ht, |
|
|
const void * |
key | |
|
) |
| | |
Check for key in hash table.
- Parameters:
-
| ht | pointer to hash table |
| key | pointer to key value |
- Returns:
- 1 if the key is present, 0 otherwise
Definition at line 162 of file rpmhash.c.