-typedef struct HT HT;
-
-unsigned int
- hash_get_n_slots_used (const HT *ht);
-
-unsigned int
- hash_get_max_chain_length (HT *ht);
-
-int
- hash_rehash (HT *ht, unsigned int new_table_size);
-
-unsigned int
- hash_get_table_size (const HT *ht);
-
-HT *
- hash_initialize (unsigned int table_size,
- void (*key_freer) (void *key),
- unsigned int (*hash) (const void *, unsigned int),
- int (*equality_tester) (const void *, const void *));
-
-unsigned int
- hash_get_n_keys (const HT *ht);
-
-int
- hash_query_in_table (const HT *ht, const void *e);
-
-void *
- hash_lookup (const HT *ht, const void *e);
-
-void *
- hash_insert_if_absent (HT *ht, const void *e, int *failed);
-
-void *
- hash_delete_if_present (HT *ht, const void *e);
-
-void
- hash_print_statistics (const HT *ht, FILE *stream);
-
-int
- hash_get_statistics (const HT *ht, unsigned int *n_slots_used,
- unsigned int *n_keys,
- unsigned int *max_chain_length);
-
-int
- hash_table_ok (HT *ht);
-
-void
- hash_do_for_each (HT *ht, void (*f) (void *e, void *aux), void *aux);
-
-int
- hash_do_for_each_2 (HT *ht, int (*f) (void *e, void *aux), void *aux);
-
-int
- hash_do_for_each_in_selected_bucket (HT *ht, const void *key,
- int (*f) (const void *bucket_key,
- void *e, void *aux),
- void *aux);
-
-void
- hash_clear (HT *ht);
-
-void
- hash_free (HT *ht);
-
-void
- hash_get_key_list (const HT *ht, unsigned int bufsize, void **buf);
-
-void *
- hash_get_first (const HT *ht);
-
-void *
- hash_get_next (const HT *ht, const void *e);
-
-/* This interface to hash_insert_if_absent is used frequently enough to
- merit a macro here. */
-
-# define HASH_INSERT_NEW_ITEM(Ht, Item, Failp) \
- do \
- { \
- void *_already; \
- _already = hash_insert_if_absent ((Ht), (Item), Failp); \
- assert (_already == NULL); \
- } \
- while (0)
-
-#endif /* HASH_H */
+typedef struct hash_tuning Hash_tuning;
+
+struct hash_table;
+
+typedef struct hash_table Hash_table;
+
+/* Information and lookup. */
+unsigned hash_get_n_buckets PARAMS ((const Hash_table *));
+unsigned hash_get_n_buckets_used PARAMS ((const Hash_table *));
+unsigned hash_get_n_entries PARAMS ((const Hash_table *));
+unsigned hash_get_max_bucket_length PARAMS ((const Hash_table *));
+bool hash_table_ok PARAMS ((const Hash_table *));
+void hash_print_statistics PARAMS ((const Hash_table *, FILE *));
+void *hash_lookup PARAMS ((const Hash_table *, const void *));
+
+/* Walking. */
+void *hash_get_first PARAMS ((const Hash_table *));
+void *hash_get_next PARAMS ((const Hash_table *, const void *));
+unsigned hash_get_entries PARAMS ((const Hash_table *, void **, unsigned));
+unsigned hash_do_for_each PARAMS ((const Hash_table *, Hash_processor, void *));
+
+/* Allocation and clean-up. */
+unsigned hash_string PARAMS ((const char *, unsigned));
+void hash_reset_tuning PARAMS ((Hash_tuning *));
+Hash_table *hash_initialize PARAMS ((unsigned, const Hash_tuning *,
+ Hash_hasher, Hash_comparator,
+ Hash_data_freer));
+void hash_clear PARAMS ((Hash_table *));
+void hash_free PARAMS ((Hash_table *));
+
+/* Insertion and deletion. */
+bool hash_rehash PARAMS ((Hash_table *, unsigned));
+void *hash_insert PARAMS ((Hash_table *, const void *));
+void *hash_delete PARAMS ((Hash_table *, const void *));
+
+#endif