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
struct  hashTable_s

Typedefs

typedef const void* voidptr

Functions

struct hashBucketfindEntry (hashTable ht, const void *key)
 Find entry in hash table. More...

int hashEqualityString (const void *key1, const void *key2)
 Compare two hash table entries for equality. More...

unsigned int hashFunctionString (const void *string)
 Return hash value of a string. More...

hashTable htCreate (int numBuckets, int keySize, int freeData, hashFunctionType fn, hashEqualityType eq)
 Create hash table. More...

void htAddEntry (hashTable ht, const void *key, const void *data)
 Add item to hash table. More...

void htFree (hashTable ht)
 Destroy hash table. More...

int htHasEntry (hashTable ht, const void *key)
 Check for key in hash table. More...

int htGetEntry (hashTable ht, const void *key, const void ***data, int *dataCount, const void **tableKey)
 Retrieve item from hash table. More...


Detailed Description

Hash table implemenation.

Definition in file rpmhash.c.


Typedef Documentation

typedef const void * voidptr
 

Definition at line 11 of file rpmhash.c.


Function Documentation

struct 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 38 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 55 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 62 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 95 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 79 of file rpmhash.c.

void htFree ( hashTable ht )
 

Destroy hash table.

Parameters:
ht   pointer to hash table

Definition at line 125 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 156 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 149 of file rpmhash.c.


Generated at Mon Sep 24 10:37:49 2001 for rpm by doxygen1.2.8.1 written by Dimitri van Heesch, © 1997-2001