summaryrefslogtreecommitdiff
path: root/locale/programs/simple-hash.c
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2001-11-28 17:22:21 +0000
committerUlrich Drepper <drepper@redhat.com>2001-11-28 17:22:21 +0000
commitcd0392d8804bcee4b7b5ebb3c8f26dafbef37db3 (patch)
tree190848489a313cb3b1053bf8a7378c9325b284c4 /locale/programs/simple-hash.c
parent0555fccea74d63cce35ca7121688a4a6dce610ca (diff)
downloadglibc-cd0392d8804bcee4b7b5ebb3c8f26dafbef37db3.tar.gz
Update.
2001-11-28 Bruno Haible <bruno@clisp.org> * locale/programs/simple-hash.c (lookup_2): Remove function. (insert_entry_2): Call lookup instead of lookup_2.
Diffstat (limited to 'locale/programs/simple-hash.c')
-rw-r--r--locale/programs/simple-hash.c51
1 files changed, 3 insertions, 48 deletions
diff --git a/locale/programs/simple-hash.c b/locale/programs/simple-hash.c
index 9056fa0447..f8430ff92e 100644
--- a/locale/programs/simple-hash.c
+++ b/locale/programs/simple-hash.c
@@ -72,8 +72,6 @@ static void insert_entry_2 (hash_table *htab, const void *key, size_t keylen,
unsigned long hval, size_t idx, void *data);
static size_t lookup (hash_table *htab, const void *key, size_t keylen,
unsigned long int hval);
-static size_t lookup_2 (hash_table *htab, const void *key, size_t keylen,
- unsigned long int hval);
static unsigned long compute_hashval (const void *key, size_t keylen);
static int is_prime (unsigned long int candidate);
@@ -179,8 +177,8 @@ insert_entry_2 (htab, key, keylen, hval, idx, data)
if (table[idx].used)
insert_entry_2 (htab, table[idx].key, table[idx].keylen,
table[idx].used,
- lookup_2 (htab, table[idx].key, table[idx].keylen,
- table[idx].used),
+ lookup (htab, table[idx].key, table[idx].keylen,
+ table[idx].used),
table[idx].data);
free (table);
@@ -252,55 +250,12 @@ iterate_table (htab, ptr, key, keylen, data)
}
-static size_t
-lookup (htab, key, keylen, hval)
- hash_table *htab;
- const void *key;
- size_t keylen;
- unsigned long hval;
-{
- unsigned long hash;
- size_t idx;
- hash_entry *table = (hash_entry *) htab->table;
-
- /* First hash function: simply take the modul but prevent zero. */
- hash = 1 + hval % htab->size;
-
- idx = hash;
-
- if (table[idx].used)
- {
- if (table[idx].used == hval && table[idx].keylen == keylen
- && memcmp (key, table[idx].key, keylen) == 0)
- return idx;
-
- /* Second hash function as suggested in [Knuth]. */
- hash = 1 + hval % (htab->size - 2);
-
- do
- {
- if (idx <= hash)
- idx = htab->size + idx - hash;
- else
- idx -= hash;
-
- /* If entry is found use it. */
- if (table[idx].used == hval && table[idx].keylen == keylen
- && memcmp (key, table[idx].key, keylen) == 0)
- return idx;
- }
- while (table[idx].used);
- }
- return idx;
-}
-
-
/* References:
[Aho,Sethi,Ullman] Compilers: Principles, Techniques and Tools, 1986
[Knuth] The Art of Computer Programming, part3 (6.4) */
static size_t
-lookup_2 (htab, key, keylen, hval)
+lookup (htab, key, keylen, hval)
hash_table *htab;
const void *key;
size_t keylen;