+
+/****f* silcutil/SilcHashTableAPI/silc_hash_table_rehash
+ *
+ * SYNOPSIS
+ *
+ * void silc_hash_table_rehash(SilcHashTable ht, SilcUInt32 new_size);
+ *
+ * DESCRIPTION
+ *
+ * Rehashs the hash table. The size of the new hash table is provided
+ * as `new_size'. If the `new_size' is zero then this routine will make
+ * the new table of a suitable size. Note that this operation may be
+ * very slow.
+ *
+ ***/
+void silc_hash_table_rehash(SilcHashTable ht, SilcUInt32 new_size);
+
+/****f* silcutil/SilcHashTableAPI/silc_hash_table_list
+ *
+ * SYNOPSIS
+ *
+ * void silc_hash_table_list(SilcHashTable ht, SilcHashTableList *htl);
+ *
+ * DESCRIPTION
+ *
+ * Prepares the `htl' SilcHashTableList sent as argument to be used in the
+ * hash table traversing with the silc_hash_table_get. After the hash
+ * table traversing is completed the silc_hash_table_list_reset must be
+ * called.
+ *
+ * NOTES
+ *
+ * The hash table will not be rehashed during the traversing of the list,
+ * even if the table was marked as auto rehashable. The caller also must
+ * not call silc_hash_table_rehash while traversing the list.
+ *
+ ***/
+void silc_hash_table_list(SilcHashTable ht, SilcHashTableList *htl);
+
+/****f* silcutil/SilcHashTableAPI/silc_hash_table_list_reset
+ *
+ * SYNOPSIS
+ *
+ * void silc_hash_table_list_reset(SilcHashTableList *htl);
+ *
+ * DESCRIPTION
+ *
+ * Resets the `htl' SilcHashTableList. This must be called after the
+ * hash table traversing is completed.
+ *
+ ***/
+void silc_hash_table_list_reset(SilcHashTableList *htl);
+
+/****f* silcutil/SilcHashTableAPI/silc_hash_table_get
+ *
+ * SYNOPSIS
+ *
+ * bool silc_hash_table_get(SilcHashTableList *htl, void **key,
+ * void **context);
+ *
+ * DESCRIPTION
+ *
+ * Returns always the next entry in the hash table into the `key' and
+ * `context' and TRUE. If this returns FALSE then there are no anymore
+ * any entrys.
+ *
+ ***/
+bool silc_hash_table_get(SilcHashTableList *htl, void **key, void **context);