rpmdb/rpmhash.c(3)

NAME
rpmdb/rpmhash.c - Hash table implemenation.

SYNOPSIS

#include 'system.h'
#include <rpmlib.h>
#include 'rpmhash.h'
#include 'debug.h'

  Data Structures
struct hashBucket_s
struct hashTable_s

  Typedefs
typedef const void * voidptr
typedef hashBucket_s * hashBucket

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

  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 hashBucket_s::key, and hashBucket_s::next.

  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.

References hashBucket_s::data, hashBucket_s::dataCount, hashBucket_s::key, hashBucket_s::next, xmalloc, and xrealloc.

  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.

References hashEqualityType, hashFunctionType, xcalloc, and xmalloc.

  void htFree (hashTable ht)

Destroy hash table.

Parameters:

ht  pointer to hash table

Definition at line 133 of file rpmhash.c.

References _free, hashBucket_s::data, hashBucket_s::key, and hashBucket_s::next.

  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.

References hashBucket_s::data, hashBucket_s::dataCount, findEntry, and hashBucket_s::key.

  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.

References findEntry.

AUTHOR

Generated automatically by Doxygen for rpm from the source code.