ATLAS Offline Software
Loading...
Searching...
No Matches
hash-table.h
Go to the documentation of this file.
1/*
2
3Copyright (c) 2005-2008, Simon Howard
4
5Permission to use, copy, modify, and/or distribute this software
6for any purpose with or without fee is hereby granted, provided
7that the above copyright notice and this permission notice appear
8in all copies.
9
10THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
11WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
12WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
13AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR
14CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
15LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
16NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
17CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
18
19 */
20
44
45#ifndef ALGORITHM_HASH_TABLE_H
46#define ALGORITHM_HASH_TABLE_H
47
48#ifdef __cplusplus
49extern "C" {
50#endif
51
55
56typedef struct _HashTable HashTable;
57
61
63
67
68typedef struct _HashTableEntry HashTableEntry;
69
73
74typedef void *HashTableKey;
75
79
80typedef void *HashTableValue;
81
85
91
95
96#define HASH_TABLE_NULL ((void *) 0)
97
105
106typedef unsigned long (*HashTableHashFunc)(HashTableKey value);
107
114
115typedef int (*HashTableEqualFunc)(HashTableKey value1, HashTableKey value2);
116
121
122typedef void (*HashTableKeyFreeFunc)(HashTableKey value);
123
128
130
142
144 HashTableEqualFunc equal_func);
145
151
152void hash_table_free(HashTable *hash_table);
153
162
164 HashTableKeyFreeFunc key_free_func,
165 HashTableValueFreeFunc value_free_func);
166
178
180 HashTableKey key,
181 HashTableValue value);
182
191
193 HashTableKey key);
194
203
205
212
214
222
224
234
236
245
247
248#ifdef __cplusplus
249}
250#endif
251
252#endif /* #ifndef ALGORITHM_HASH_TABLE_H */
253
HashTableValue hash_table_lookup(HashTable *hash_table, HashTableKey key)
Look up a value in a hash table by key.
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.
unsigned long(* HashTableHashFunc)(HashTableKey value)
Hash function used to generate hash values for keys used in a hash table.
Definition hash-table.h:106
void(* HashTableKeyFreeFunc)(HashTableKey value)
Type of function used to free keys when entries are removed from a hash table.
Definition hash-table.h:122
void * HashTableValue
A value stored in a HashTable.
Definition hash-table.h:80
int hash_table_remove(HashTable *hash_table, HashTableKey key)
Remove a value from a hash table.
int hash_table_iter_has_more(HashTableIterator *iterator)
Determine if there are more keys in the hash table to iterate over.
int(* HashTableEqualFunc)(HashTableKey value1, HashTableKey value2)
Function used to compare two keys for equality.
Definition hash-table.h:115
struct _HashTableEntry HashTableEntry
Internal structure representing an entry in a hash table.
Definition hash-table.h:68
void hash_table_iterate(HashTable *hash_table, HashTableIterator *iter)
Initialise a HashTableIterator to iterate over a hash table.
HashTableValue hash_table_iter_next(HashTableIterator *iterator)
Using a hash table iterator, retrieve the next key.
HashTable * hash_table_new(HashTableHashFunc hash_func, HashTableEqualFunc equal_func)
Create a new hash table.
struct _HashTableIterator HashTableIterator
Structure used to iterate over a hash table.
Definition hash-table.h:62
struct _HashTable HashTable
A hash table structure.
Definition hash-table.h:56
int hash_table_num_entries(HashTable *hash_table)
Retrieve the number of entries in a hash table.
void * HashTableKey
A key to look up a value in a HashTable.
Definition hash-table.h:74
void(* HashTableValueFreeFunc)(HashTableValue value)
Type of function used to free values when entries are removed from a hash table.
Definition hash-table.h:129
void hash_table_free(HashTable *hash_table)
Destroy a 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.
Definition of a HashTableIterator.
Definition hash-table.h:86
HashTable * hash_table
Definition hash-table.h:87
HashTableEntry * next_entry
Definition hash-table.h:88