Commit b13eb66b by Mark Mitchell Committed by Mark Mitchell

hashtab.h (hashval_t): New type.

	* hashtab.h (hashval_t): New type.
	(htab_find_with_hash): Use it as an argument.
	(htab_find_slot_with_hash): Likewise.

	* hashtab.c (find_empty_slot_for_expand): Use hashval_t for hash
	codes.
	(htab_find_with_hash): Likewise.
	(htab_find_slot_with_hash): Likewise.

From-SVN: r32842
parent d68894a1
2000-03-30 Mark Mitchell <mark@codesourcery.com>
* hashtab.h (hashval_t): New type.
(htab_find_with_hash): Use it as an argument.
(htab_find_slot_with_hash): Likewise.
2000-03-14 Bernd Schmidt <bernds@cygnus.co.uk> 2000-03-14 Bernd Schmidt <bernds@cygnus.co.uk>
* hashtab.h (htab_trav): Modify type so that first arg is of type * hashtab.h (htab_trav): Modify type so that first arg is of type
......
/* An expandable hash tables datatype. /* An expandable hash tables datatype.
Copyright (C) 1999 Free Software Foundation, Inc. Copyright (C) 1999, 2000 Free Software Foundation, Inc.
Contributed by Vladimir Makarov (vmakarov@cygnus.com). Contributed by Vladimir Makarov (vmakarov@cygnus.com).
This program is free software; you can redistribute it and/or modify This program is free software; you can redistribute it and/or modify
...@@ -38,10 +38,13 @@ extern "C" { ...@@ -38,10 +38,13 @@ extern "C" {
#include <ansidecl.h> #include <ansidecl.h>
/* The type for a hash code. */
typedef unsigned int hashval_t;
/* Callback function pointer types. */ /* Callback function pointer types. */
/* Calculate hash of a table entry. */ /* Calculate hash of a table entry. */
typedef unsigned int (*htab_hash) PARAMS ((const void *)); typedef hashval_t (*htab_hash) PARAMS ((const void *));
/* Compare a table entry with a possible entry. The entry already in /* Compare a table entry with a possible entry. The entry already in
the table always comes first, so the second element can be of a the table always comes first, so the second element can be of a
...@@ -109,9 +112,9 @@ extern void htab_empty PARAMS ((htab_t)); ...@@ -109,9 +112,9 @@ extern void htab_empty PARAMS ((htab_t));
extern void *htab_find PARAMS ((htab_t, const void *)); extern void *htab_find PARAMS ((htab_t, const void *));
extern void **htab_find_slot PARAMS ((htab_t, const void *, int)); extern void **htab_find_slot PARAMS ((htab_t, const void *, int));
extern void *htab_find_with_hash PARAMS ((htab_t, const void *, extern void *htab_find_with_hash PARAMS ((htab_t, const void *,
unsigned int)); hashval_t));
extern void **htab_find_slot_with_hash PARAMS ((htab_t, const void *, extern void **htab_find_slot_with_hash PARAMS ((htab_t, const void *,
unsigned int, int)); hashval_t, int));
extern void htab_clear_slot PARAMS ((htab_t, void **)); extern void htab_clear_slot PARAMS ((htab_t, void **));
extern void htab_remove_elt PARAMS ((htab_t, void *)); extern void htab_remove_elt PARAMS ((htab_t, void *));
......
2000-03-30 Mark Mitchell <mark@codesourcery.com>
* hashtab.c (find_empty_slot_for_expand): Use hashval_t for hash
codes.
(htab_find_with_hash): Likewise.
(htab_find_slot_with_hash): Likewise.
2000-03-29 Zack Weinberg <zack@wolery.cumb.org> 2000-03-29 Zack Weinberg <zack@wolery.cumb.org>
* hashtab.c (htab_find_with_hash): Avoid calculating hash2 * hashtab.c (htab_find_with_hash): Avoid calculating hash2
......
/* An expandable hash tables datatype. /* An expandable hash tables datatype.
Copyright (C) 1999 Free Software Foundation, Inc. Copyright (C) 1999, 2000 Free Software Foundation, Inc.
Contributed by Vladimir Makarov (vmakarov@cygnus.com). Contributed by Vladimir Makarov (vmakarov@cygnus.com).
This file is part of the libiberty library. This file is part of the libiberty library.
...@@ -155,10 +155,10 @@ htab_empty (htab) ...@@ -155,10 +155,10 @@ htab_empty (htab)
static void ** static void **
find_empty_slot_for_expand (htab, hash) find_empty_slot_for_expand (htab, hash)
htab_t htab; htab_t htab;
unsigned int hash; hashval_t hash;
{ {
size_t size = htab->size; size_t size = htab->size;
unsigned int hash2 = 1 + hash % (size - 2); hashval_t hash2 = 1 + hash % (size - 2);
unsigned int index = hash % size; unsigned int index = hash % size;
for (;;) for (;;)
...@@ -221,9 +221,10 @@ void * ...@@ -221,9 +221,10 @@ void *
htab_find_with_hash (htab, element, hash) htab_find_with_hash (htab, element, hash)
htab_t htab; htab_t htab;
const void *element; const void *element;
unsigned int hash; hashval_t hash;
{ {
unsigned int index, hash2; unsigned int index;
hashval_t hash2;
size_t size; size_t size;
void *entry; void *entry;
...@@ -272,11 +273,12 @@ void ** ...@@ -272,11 +273,12 @@ void **
htab_find_slot_with_hash (htab, element, hash, insert) htab_find_slot_with_hash (htab, element, hash, insert)
htab_t htab; htab_t htab;
const void *element; const void *element;
unsigned int hash; hashval_t hash;
int insert; int insert;
{ {
void **first_deleted_slot; void **first_deleted_slot;
unsigned int index, hash2; unsigned int index;
hashval_t hash2;
size_t size; size_t size;
if (insert && htab->size * 3 <= htab->n_elements * 4) if (insert && htab->size * 3 <= htab->n_elements * 4)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment