X-Git-Url: http://drtracing.org/?a=blobdiff_plain;ds=sidebyside;f=gas%2Fhash.h;h=54f70d12acdf8cedc8e1e472836d417f9d8e6bc1;hb=f85d59c30681f55150bf28225b3873fe2d4b6bf7;hp=43c7556e29cb6131811205556853153b24023f77;hpb=e98fe4f7b54cbdf29aef9287bbb1bea8801dd05a;p=deliverable%2Fbinutils-gdb.git diff --git a/gas/hash.h b/gas/hash.h index 43c7556e29..54f70d12ac 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-2016 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,42 +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_entry -{ - const char *hash_string; /* points to where the symbol string is */ - /* NULL means slot is not used */ - /* DELETED means slot was deleted */ - PTR hash_value; /* user's datum, associated with symbol */ - unsigned long h; -}; +struct hash_control; +/* Set the size of the hash table used. */ -struct hash_control; +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 *); -/* 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 */ +#endif /* HASH_H */