rpmhash.h File Reference

Hash table implemenation. More...

`#include <rpmiotypes.h>`
Include dependency graph for rpmhash.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

## Macros

#define | htUnlink(_ht) ((hashTable)rpmioUnlinkPoolItem((rpmioItem)(_ht), __FUNCTION__, __FILE__, __LINE__))
#define | htLink(_ht) ((hashTable)rpmioLinkPoolItem((rpmioItem)(_ht), __FUNCTION__, __FILE__, __LINE__))
#define | htFree(_ht) ((hashTable)rpmioFreePoolItem((rpmioItem)(_ht), __FUNCTION__, __FILE__, __LINE__))

## Typedefs

typedef struct hashTable_s * | hashTable
typedef int(* | hashEqualityType )(const void *key1, const void *key2)
| Compare two hash table entries for equality. More...
typedef rpmuint32_t(* | hashFunctionType )(rpmuint32_t h, const void *data, size_t size)
| Return hash value. More...

## Functions

int | hashEqualityString (const void *key1, const void *key2)
| Compare two hash table entries for equality. More...
rpmuint32_t | hashFunctionString (rpmuint32_t h, const void *data, size_t size)
| Return hash value of a string. More...
void | htAddEntry (hashTable ht, const void *key, const void *data)
| Add item to hash table. More...
int | htGetEntry (hashTable ht, const void *key, const void *data, int *dataCount, const void *tableKey)
| Retrieve item from hash table. More...
const void ** | htGetKeys (hashTable ht)
| Retrieve keys from hash table. More...
int | htHasEntry (hashTable ht, const void *key)
| Check for key in hash table. More...
hashTable | htUnlink (hashTable ht)
| Unreference a hash table instance. More...
hashTable | htLink (hashTable ht)
| Reference a hash table instance. More...
hashTable | htFree (hashTable ht)
| Destroy hash table. More...
hashTable | htCreate (int numBuckets, size_t keySize, int freeData, hashFunctionType fn, hashEqualityType eq)
| Create hash table. More...

## Detailed Description

Hash table implemenation.

Definition in file rpmhash.h.

## Macro Definition Documentation

#define htFree | ( |  | _ht | ) | ((hashTable)rpmioFreePoolItem((rpmioItem)(_ht), __FUNCTION__, __FILE__, __LINE__))

Definition at line 131 of file rpmhash.h.

#define htLink | ( |  | _ht | ) | ((hashTable)rpmioLinkPoolItem((rpmioItem)(_ht), __FUNCTION__, __FILE__, __LINE__))

Definition at line 120 of file rpmhash.h.

#define htUnlink | ( |  | _ht | ) | ((hashTable)rpmioUnlinkPoolItem((rpmioItem)(_ht), __FUNCTION__, __FILE__, __LINE__))

Definition at line 109 of file rpmhash.h.

## Typedef Documentation

typedef int(* hashEqualityType)(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 25 of file rpmhash.h.

typedef rpmuint32_t(* hashFunctionType)(rpmuint32_t h, const void *data, size_t size)

Return hash value.

Parameters

  h | hash initial value
  data | data on which to calculate hash value
  size | size of data in bytes

Returns
  hash value

Definition at line 44 of file rpmhash.h.

typedef struct hashTable_s* hashTable

Definition at line 13 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 70 of file rpmhash.c.

Referenced by htCreate().

rpmuint32_t hashFunctionString | ( | rpmuint32_t | h,
|  | const void * | data,
|  | size_t | size
| ) |  |

Return hash value of a string.

Parameters

  h | hash initial value
  data | data on which to calculate hash value
  size | size of data in bytes (0 will use strlen(data))

Returns
  hash value

Definition at line 77 of file rpmhash.c.

Referenced by avOpendir(), avReaddir(), Fstat(), ftpLstat(), ftpStat(), and htCreate().

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 144 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,
|  | size_t | 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 key (NULL for default)
  eq | function to compare keys for equality (NULL for default)

Returns
  pointer to initialized hash table

Definition at line 269 of file rpmhash.c.

References hashTable_s::buckets, hashTable_s::eq, hashTable_s::fn, hashTable_s::freeData, hashEqualityString(), hashFunctionString(), htGetPool(), htLink(), hashTable_s::keySize, hashTable_s::numBuckets, and xcalloc().

Referenced by fpCacheCreate(), and rpmtsRun().

hashTable htFree | ( | hashTable | ht | ) |

Destroy hash table.

Parameters

  ht | pointer to hash table

Returns
  NULL on last dereference

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 | data value from bucket
  *dataCount | data value size from bucket
  *tableKey | key value from bucket (may be NULL)

Returns
  0 on success, 1 if the item is not found.

Definition at line 181 of file rpmhash.c.

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

Referenced by cacheContainsDirectory(), and handleOverlappedFiles().

const void** htGetKeys | ( | hashTable | ht | ) |

Retrieve keys from hash table.

Parameters

  ht | pointer to hash table

Returns
  array of key values terminated by a NULL pointer

Definition at line 199 of file rpmhash.c.

References hashTable_s::buckets, hashBucket_s::data, hashBucket_s::key, hashBucket_s::next, hashTable_s::numBuckets, and xcalloc().

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

References findEntry().

hashTable htLink | ( | hashTable | ht | ) |

Reference a hash table instance.

Parameters

  ht | hash table

Returns
  new hash table reference

Referenced by htCreate().

hashTable htUnlink | ( | hashTable | ht | ) |

Unreference a hash table instance.

Parameters

  ht | hash table

Returns
  NULL on last dereference