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>
|
2005-04-29 Ben Elliston <bje@au.ibm.com>
|
||||||
|
|
||||||
* Makefile.am (GAS_CFILES): Remove bignum-copy.c.
|
* 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;
|
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
|
/* Find an entry in a hash table, returning its value. Returns NULL
|
||||||
if the entry is not found. */
|
if the entry is not found. */
|
||||||
|
|
||||||
|
@ -309,6 +334,35 @@ hash_find (struct hash_control *table, const char *key)
|
||||||
return p->data;
|
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
|
/* Traverse a hash table. Call the function on every entry in the
|
||||||
hash table. */
|
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 *,
|
extern const char *hash_jam (struct hash_control *,
|
||||||
const char *key, PTR value);
|
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
|
/* Find an entry in a hash table, returning its value. Returns NULL
|
||||||
if the entry is not found. */
|
if the entry is not found. */
|
||||||
|
|
||||||
extern PTR hash_find (struct hash_control *, const char *key);
|
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
|
/* Traverse a hash table. Call the function on every entry in the
|
||||||
hash table. */
|
hash table. */
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue