diff options
author | Ulrich Drepper <drepper@redhat.com> | 2001-11-28 17:22:21 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2001-11-28 17:22:21 +0000 |
commit | cd0392d8804bcee4b7b5ebb3c8f26dafbef37db3 (patch) | |
tree | 190848489a313cb3b1053bf8a7378c9325b284c4 /locale/programs | |
parent | 0555fccea74d63cce35ca7121688a4a6dce610ca (diff) | |
download | glibc-cd0392d8804bcee4b7b5ebb3c8f26dafbef37db3.zip glibc-cd0392d8804bcee4b7b5ebb3c8f26dafbef37db3.tar.gz glibc-cd0392d8804bcee4b7b5ebb3c8f26dafbef37db3.tar.bz2 |
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')
-rw-r--r-- | locale/programs/simple-hash.c | 51 |
1 files changed, 3 insertions, 48 deletions
diff --git a/locale/programs/simple-hash.c b/locale/programs/simple-hash.c index 9056fa0..f8430ff 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; |