Hash Table Interface


A collision resistant hash table API. This is a hash table that provides a reliable hash table (what you add there stays there, and duplicate keys are allowed) with as fast reference to the key as possible. If there are a lot of duplicate keys in the hash table the lookup slows down. However, this is reliable and no data is lost at any point. If you know that you never have duplicate keys then this is as fast as any simple hash table.

The interface provides many ways to search the hash table including an extended interface where caller can specify their own hash and comparison functions. The interface also supports SilcStack and all memory allocated by the hash table can be allocated from SilcStack.

There are two ways to traverse the entire hash table if this feature is needed. There exists a foreach function that calls a foreach callback for each entry in the hash table. Other way is to use SilcHashTableList structure and traverse the hash table inside while() using the list structure. Both are equally fast.

The interface also provides many utility hashing and comparison functions that caller may use with SilcHashTable.

The hash table is not thread safe. If same SilcHashtable context is used in multi thread environment concurrency control must be employed.