X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gas%2Fhash.h;h=54f70d12acdf8cedc8e1e472836d417f9d8e6bc1;hb=8b8c7c9f49992750f66f81b4601d593a3858d98c;hp=4556f10a7993b976029bbc9290482d843a04c94f;hpb=87c245cccce4a84d53381ea7a8247330608eba7f;p=deliverable%2Fbinutils-gdb.git diff --git a/gas/hash.h b/gas/hash.h index 4556f10a79..54f70d12ac 100644 --- a/gas/hash.h +++ b/gas/hash.h @@ -1,12 +1,11 @@ /* hash.h -- header file for gas hash table routines - Copyright 1987, 1992, 1993, 1995, 1999, 2003 - Free Software Foundation, Inc. + 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, @@ -16,8 +15,8 @@ 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. */ + Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA + 02110-1301, USA. */ #ifndef HASH_H #define HASH_H @@ -31,6 +30,7 @@ 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. */ @@ -42,25 +42,42 @@ extern void hash_die (struct hash_control *); hash table. */ extern const char *hash_insert (struct hash_control *, - const char *key, PTR value); + 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, PTR value); + 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 PTR hash_find (struct hash_control *, const char *key); +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, PTR value)); + 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. */