/cvmfs/atlas.cern.ch/repo/sw/ASG/AnalysisBase/2.4.31/CxxUtils/CxxUtils/libcalg/hash-table.h File Reference

Hash table. More...

Go to the source code of this file.

Classes

struct  _HashTableIterator

Defines

#define HASH_TABLE_NULL   ((void *) 0)

Typedefs

typedef struct _HashTable HashTable
typedef struct _HashTableIterator HashTableIterator
typedef struct _HashTableEntry HashTableEntry
typedef void * HashTableKey
typedef void * HashTableValue
typedef unsigned long(* HashTableHashFunc )(HashTableKey value)
typedef int(* HashTableEqualFunc )(HashTableKey value1, HashTableKey value2)
typedef void(* HashTableKeyFreeFunc )(HashTableKey value)
typedef void(* HashTableValueFreeFunc )(HashTableValue value)

Functions

HashTablehash_table_new (HashTableHashFunc hash_func, HashTableEqualFunc equal_func)
void hash_table_free (HashTable *hash_table)
void hash_table_register_free_functions (HashTable *hash_table, HashTableKeyFreeFunc key_free_func, HashTableValueFreeFunc value_free_func)
int hash_table_insert (HashTable *hash_table, HashTableKey key, HashTableValue value)
HashTableValue hash_table_lookup (HashTable *hash_table, HashTableKey key)
int hash_table_remove (HashTable *hash_table, HashTableKey key)
int hash_table_num_entries (HashTable *hash_table)
void hash_table_iterate (HashTable *hash_table, HashTableIterator *iter)
int hash_table_iter_has_more (HashTableIterator *iterator)
HashTableValue hash_table_iter_next (HashTableIterator *iterator)

Detailed Description

Hash table.

A hash table stores a set of values which can be addressed by a key. Given the key, the corresponding value can be looked up quickly.

To create a hash table, use hash_table_new. To destroy a hash table, use hash_table_free.

To insert a value into a hash table, use hash_table_insert.

To remove a value from a hash table, use hash_table_remove.

To look up a value by its key, use hash_table_lookup.

To iterate over all values in a hash table, use hash_table_iterate to initialise a HashTableIterator structure. Each value can then be read in turn using hash_table_iter_next and hash_table_iter_has_more.


Define Documentation

#define HASH_TABLE_NULL   ((void *) 0)

A null HashTableValue.


Typedef Documentation

typedef struct _HashTable HashTable

A hash table structure.

typedef struct _HashTableEntry HashTableEntry

Internal structure representing an entry in a hash table.

typedef int(* HashTableEqualFunc)(HashTableKey value1, HashTableKey value2)

Function used to compare two keys for equality.

Returns:
Non-zero if the two keys are equal, zero if the keys are not equal.
typedef unsigned long(* HashTableHashFunc)(HashTableKey value)

Hash function used to generate hash values for keys used in a hash table.

Parameters:
value The value to generate a hash value for.
Returns:
The hash value.

Structure used to iterate over a hash table.

typedef void* HashTableKey

A key to look up a value in a HashTable.

typedef void(* HashTableKeyFreeFunc)(HashTableKey value)

Type of function used to free keys when entries are removed from a hash table.

typedef void* HashTableValue

A value stored in a HashTable.

typedef void(* HashTableValueFreeFunc)(HashTableValue value)

Type of function used to free values when entries are removed from a hash table.


Function Documentation

void hash_table_free ( HashTable hash_table  ) 

Destroy a hash table.

Parameters:
hash_table The hash table to destroy.
int hash_table_insert ( HashTable hash_table,
HashTableKey  key,
HashTableValue  value 
)

Insert a value into a hash table, overwriting any existing entry using the same key.

Parameters:
hash_table The hash table.
key The key for the new value.
value The value to insert.
Returns:
Non-zero if the value was added successfully, or zero if it was not possible to allocate memory for the new entry.
int hash_table_iter_has_more ( HashTableIterator iterator  ) 

Determine if there are more keys in the hash table to iterate over.

Parameters:
iterator The hash table iterator.
Returns:
Zero if there are no more values to iterate over, non-zero if there are more values to iterate over.
HashTableValue hash_table_iter_next ( HashTableIterator iterator  ) 

Using a hash table iterator, retrieve the next key.

Parameters:
iterator The hash table iterator.
Returns:
The next key from the hash table, or HASH_TABLE_NULL if there are no more keys to iterate over.
void hash_table_iterate ( HashTable hash_table,
HashTableIterator iter 
)

Initialise a HashTableIterator to iterate over a hash table.

Parameters:
hash_table The hash table.
iter Pointer to an iterator structure to initialise.
HashTableValue hash_table_lookup ( HashTable hash_table,
HashTableKey  key 
)

Look up a value in a hash table by key.

Parameters:
hash_table The hash table.
key The key of the value to look up.
Returns:
The value, or HASH_TABLE_NULL if there is no value with that key in the hash table.
HashTable* hash_table_new ( HashTableHashFunc  hash_func,
HashTableEqualFunc  equal_func 
)

Create a new hash table.

Parameters:
hash_func Function used to generate hash keys for the keys used in the table.
equal_func Function used to test keys used in the table for equality.
Returns:
A new hash table structure, or NULL if it was not possible to allocate the new hash table.
int hash_table_num_entries ( HashTable hash_table  ) 

Retrieve the number of entries in a hash table.

Parameters:
hash_table The hash table.
Returns:
The number of entries in the hash table.
void hash_table_register_free_functions ( HashTable hash_table,
HashTableKeyFreeFunc  key_free_func,
HashTableValueFreeFunc  value_free_func 
)

Register functions used to free the key and value when an entry is removed from a hash table.

Parameters:
hash_table The hash table.
key_free_func Function used to free keys.
value_free_func Function used to free values.
int hash_table_remove ( HashTable hash_table,
HashTableKey  key 
)

Remove a value from a hash table.

Parameters:
hash_table The hash table.
key The key of the value to remove.
Returns:
Non-zero if a key was removed, or zero if the specified key was not found in the hash table.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

Generated on 1 Dec 2017 for RootCore Packages by  doxygen 1.6.1