Main Page   Modules   Data Structures   File List   Data Fields   Globals   Related Pages  

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 hashBucket_shashBucket

Functions

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.

hashTable 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

typedef struct hashBucket_s* hashBucket
 

Definition at line 13 of file rpmhash.c.

typedef const void* voidptr
 

Definition at line 11 of file rpmhash.c.


Function Documentation

hashBucket findEntry hashTable    ht,
const void *    key
[static]
 

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.

References hashTable_s::buckets, hashTable_s::eq, hashTable_s::fn, hashBucket_s::key, hashBucket_s::next, and hashTable_s::numBuckets.

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 61 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 68 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 106 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,
int    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.

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 87 of file rpmhash.c.

References hashTable_s::buckets, hashTable_s::eq, hashTable_s::fn, hashTable_s::freeData, hashEqualityType, hashFunctionType, hashTable_s::keySize, hashTable_s::numBuckets, xcalloc(), and xmalloc().

Referenced by fpCacheCreate(), and rpmtsRun().

hashTable htFree hashTable    ht
 

Destroy hash table.

Parameters:
ht  pointer to hash table
Returns:
NULL always

Definition at line 139 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.

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 182 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.

Parameters:
ht  pointer to hash table
key  pointer to key value
Returns:
1 if the key is present, 0 otherwise

Definition at line 175 of file rpmhash.c.

References findEntry().


Generated on Sun Oct 26 13:02:07 2003 for rpm by doxygen1.2.18