X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gas%2Fhash.h;h=444bcc23a3a77360d2b7640c66f4ca062ed4373c;hb=refs%2Fheads%2Fconcurrent-displaced-stepping-2020-04-01;hp=fb229c8086a5af8927c99b9c0da88f11e07e9e1e;hpb=5b64ad42d36e6d487e1f7287d37fbc243a178e72;p=deliverable%2Fbinutils-gdb.git diff --git a/gas/hash.h b/gas/hash.h index fb229c8086..444bcc23a3 100644 --- a/gas/hash.h +++ b/gas/hash.h @@ -1,11 +1,11 @@ -/* hash.h - for hash.c - Copyright (C) 1987, 1992 Free Software Foundation, Inc. +/* hash.h -- header file for gas hash table routines + Copyright (C) 1987-2020 Free Software Foundation, Inc. This file is part of GAS, the GNU Assembler. GAS is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) + the Free Software Foundation; either version 3, or (at your option) any later version. GAS is distributed in the hope that it will be useful, @@ -14,32 +14,75 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with GAS; see the file COPYING. If not, write to - the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + along with GAS; see the file COPYING. If not, write to the Free + Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA + 02110-1301, USA. */ -#ifndef hashH -#define hashH +#ifndef HASH_H +#define HASH_H struct hash_control; -/* returns control block */ -struct hash_control *hash_new PARAMS ((void)); -void hash_die PARAMS ((struct hash_control *)); -/* returns previous value */ -PTR hash_delete PARAMS ((struct hash_control *, const char *str)); -/* returns previous value */ -PTR hash_replace PARAMS ((struct hash_control *, const char *str, PTR val)); -/* returns error string or null */ -const char *hash_insert PARAMS ((struct hash_control *, const char *str, - PTR val)); -/* returns value */ -PTR hash_find PARAMS ((struct hash_control *, const char *str)); -/* returns error text or null (internal) */ -const char *hash_jam PARAMS ((struct hash_control *, const char *str, - PTR val)); - -void hash_print_statistics PARAMS ((FILE *, const char *, - struct hash_control *)); -#endif /* #ifdef hashH */ - -/* end of hash.c */ +/* Set the size of the hash table used. */ + +void set_gas_hash_table_size (unsigned long); + +/* Create a hash table. This return a control block. */ + +extern struct hash_control *hash_new (void); +extern struct hash_control *hash_new_sized (unsigned long); + +/* Delete a hash table, freeing all allocated memory. */ + +extern void hash_die (struct hash_control *); + +/* Insert an entry into a hash table. This returns NULL on success. + On error, it returns a printable string indicating the error. It + is considered to be an error if the entry already exists in the + hash table. */ + +extern const char *hash_insert (struct hash_control *, + const char *key, void *value); + +/* Insert or replace an entry in a hash table. This returns NULL on + success. On error, it returns a printable string indicating the + error. If an entry already exists, its value is replaced. */ + +extern const char *hash_jam (struct hash_control *, + const char *key, void *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 void *hash_replace (struct hash_control *, const char *key, + void *value); + +/* Find an entry in a hash table, returning its value. Returns NULL + if the entry is not found. */ + +extern void *hash_find (struct hash_control *, const char *key); + +/* As hash_find, but KEY is of length LEN and is not guaranteed to be + NUL-terminated. */ + +extern void *hash_find_n (struct hash_control *, const char *key, size_t len); + +/* Delete an entry from a hash table. This returns the value stored + for that entry, or NULL if there is no such entry. */ + +extern void *hash_delete (struct hash_control *, const char *key, int); + +/* Traverse a hash table. Call the function on every entry in the + hash table. */ + +extern void hash_traverse (struct hash_control *, + void (*pfn) (const char *key, void *value)); + +/* Print hash table statistics on the specified file. NAME is the + name of the hash table, used for printing a header. */ + +extern void hash_print_statistics (FILE *, const char *name, + struct hash_control *); + +#endif /* HASH_H */