2005-04-29 H.J. Lu <hongjiu.lu@intel.com>
* hash.c: Undo the last change. * hash.h: Likewise.
This commit is contained in:
parent
cba1200696
commit
7e70f1afa7
3 changed files with 71 additions and 0 deletions
|
@ -1,3 +1,8 @@
|
|||
2005-04-29 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* hash.c: Undo the last change.
|
||||
* hash.h: Likewise.
|
||||
|
||||
2005-04-29 Ben Elliston <bje@au.ibm.com>
|
||||
|
||||
* Makefile.am (GAS_CFILES): Remove bignum-copy.c.
|
||||
|
|
54
gas/hash.c
54
gas/hash.c
|
@ -294,6 +294,31 @@ hash_jam (struct hash_control *table, const char *key, PTR value)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
/* Replace an existing entry in a hash table. This returns the old
|
||||
value stored for the entry. If the entry is not found in the hash
|
||||
table, this does nothing and returns NULL. */
|
||||
|
||||
PTR
|
||||
hash_replace (struct hash_control *table, const char *key, PTR value)
|
||||
{
|
||||
struct hash_entry *p;
|
||||
PTR ret;
|
||||
|
||||
p = hash_lookup (table, key, NULL, NULL);
|
||||
if (p == NULL)
|
||||
return NULL;
|
||||
|
||||
#ifdef HASH_STATISTICS
|
||||
++table->replacements;
|
||||
#endif
|
||||
|
||||
ret = p->data;
|
||||
|
||||
p->data = value;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* Find an entry in a hash table, returning its value. Returns NULL
|
||||
if the entry is not found. */
|
||||
|
||||
|
@ -309,6 +334,35 @@ hash_find (struct hash_control *table, const char *key)
|
|||
return p->data;
|
||||
}
|
||||
|
||||
/* Delete an entry from a hash table. This returns the value stored
|
||||
for that entry, or NULL if there is no such entry. */
|
||||
|
||||
PTR
|
||||
hash_delete (struct hash_control *table, const char *key)
|
||||
{
|
||||
struct hash_entry *p;
|
||||
struct hash_entry **list;
|
||||
|
||||
p = hash_lookup (table, key, &list, NULL);
|
||||
if (p == NULL)
|
||||
return NULL;
|
||||
|
||||
if (p != *list)
|
||||
abort ();
|
||||
|
||||
#ifdef HASH_STATISTICS
|
||||
++table->deletions;
|
||||
#endif
|
||||
|
||||
*list = p->next;
|
||||
|
||||
/* Note that we never reclaim the memory for this entry. If gas
|
||||
ever starts deleting hash table entries in a big way, this will
|
||||
have to change. */
|
||||
|
||||
return p->data;
|
||||
}
|
||||
|
||||
/* Traverse a hash table. Call the function on every entry in the
|
||||
hash table. */
|
||||
|
||||
|
|
12
gas/hash.h
12
gas/hash.h
|
@ -51,11 +51,23 @@ extern const char *hash_insert (struct hash_control *,
|
|||
extern const char *hash_jam (struct hash_control *,
|
||||
const char *key, PTR value);
|
||||
|
||||
/* Replace an existing entry in a hash table. This returns the old
|
||||
value stored for the entry. If the entry is not found in the hash
|
||||
table, this does nothing and returns NULL. */
|
||||
|
||||
extern PTR hash_replace (struct hash_control *, const char *key,
|
||||
PTR value);
|
||||
|
||||
/* Find an entry in a hash table, returning its value. Returns NULL
|
||||
if the entry is not found. */
|
||||
|
||||
extern PTR hash_find (struct hash_control *, const char *key);
|
||||
|
||||
/* Delete an entry from a hash table. This returns the value stored
|
||||
for that entry, or NULL if there is no such entry. */
|
||||
|
||||
extern PTR hash_delete (struct hash_control *, const char *key);
|
||||
|
||||
/* Traverse a hash table. Call the function on every entry in the
|
||||
hash table. */
|
||||
|
||||
|
|
Loading…
Reference in a new issue