rpmdb/rpmhash.h File Reference

Hash table implemenation. More...

Go to the source code of this file.

Typedefs

typedef struct hashTable_shashTable
typedef unsigned int(* hashFunctionType )(const void *string)
typedef int(* hashEqualityType )(const void *key1, const void *key2)

Functions

unsigned int hashFunctionString (const void *string)
 Return hash value of a string.
int hashEqualityString (const void *key1, const void *key2)
 Compare two hash table entries for equality.
hashTable htCreate (int numBuckets, int keySize, int freeData, hashFunctionType fn, hashEqualityType eq)
 Create hash table.
void 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.

Detailed Description

Hash table implemenation.

Definition in file rpmhash.h.


Typedef Documentation

typedef int(* hashEqualityType)(const void *key1, const void *key2)

Definition at line 24 of file rpmhash.h.

typedef unsigned int(* hashFunctionType)(const void *string)

Definition at line 19 of file rpmhash.h.

typedef struct hashTable_s* hashTable

Definition at line 11 of file rpmhash.h.


Function Documentation

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.

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

void htFree ( hashTable  ht  ) 

Destroy hash table.

Parameters:
ht pointer to hash table

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.

Generated on Sun Mar 7 00:50:36 2010 for rpm by  doxygen 1.6.3