From 279745ad18cd2dbbfdd1a841be35f676eb2287d6 Mon Sep 17 00:00:00 2001 From: Jim Meyering Date: Fri, 23 Nov 2001 08:09:14 +0000 Subject: [PATCH] (struct hash_table): Define it here instead. --- lib/hash.c | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/lib/hash.c b/lib/hash.c index 1cf5c5ee33..df8f4bd615 100644 --- a/lib/hash.c +++ b/lib/hash.c @@ -61,6 +61,40 @@ char *malloc (); #include "hash.h" +struct hash_table + { + /* The array of buckets starts at BUCKET and extends to BUCKET_LIMIT-1, + for a possibility of N_BUCKETS. Among those, N_BUCKETS_USED buckets + are not empty, there are N_ENTRIES active entries in the table. */ + struct hash_entry *bucket; + struct hash_entry *bucket_limit; + unsigned n_buckets; + unsigned n_buckets_used; + unsigned n_entries; + + /* Tuning arguments, kept in a physicaly separate structure. */ + const Hash_tuning *tuning; + + /* Three functions are given to `hash_initialize', see the documentation + block for this function. In a word, HASHER randomizes a user entry + into a number up from 0 up to some maximum minus 1; COMPARATOR returns + true if two user entries compare equally; and DATA_FREER is the cleanup + function for a user entry. */ + Hash_hasher hasher; + Hash_comparator comparator; + Hash_data_freer data_freer; + + /* A linked list of freed struct hash_entry structs. */ + struct hash_entry *free_entry_list; + +#if USE_OBSTACK + /* Whenever obstacks are used, it is possible to allocate all overflowed + entries into a single stack, so they all can be freed in a single + operation. It is not clear if the speedup is worth the trouble. */ + struct obstack entry_stack; +#endif + }; + /* A hash table contains many internal entries, each holding a pointer to some user provided data (also called a user entry). An entry indistinctly refers to both the internal entry and its associated user entry. A user -- 2.30.2