Use target_xfer_partial_ftype for rs6000_xfer_shared_libraries
[deliverable/binutils-gdb.git] / gas / hash.h
CommitLineData
54d22525 1/* hash.h -- header file for gas hash table routines
4c665b71 2 Copyright 1987, 1992, 1993, 1995, 1999, 2003, 2005, 2007, 2008, 2013
2da5c037 3 Free Software Foundation, Inc.
252b5132
RH
4
5 This file is part of GAS, the GNU Assembler.
6
7 GAS is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
ec2655a6 9 the Free Software Foundation; either version 3, or (at your option)
252b5132
RH
10 any later version.
11
12 GAS is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
54d22525 18 along with GAS; see the file COPYING. If not, write to the Free
4b4da160
NC
19 Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
20 02110-1301, USA. */
252b5132 21
54d22525
ILT
22#ifndef HASH_H
23#define HASH_H
252b5132
RH
24
25struct hash_control;
26
4bdd3565
NC
27/* Set the size of the hash table used. */
28
f7a568ea 29void set_gas_hash_table_size (unsigned long);
4bdd3565 30
54d22525
ILT
31/* Create a hash table. This return a control block. */
32
b1f1fa96 33extern struct hash_control *hash_new (void);
4c665b71 34extern struct hash_control *hash_new_sized (unsigned long);
54d22525
ILT
35
36/* Delete a hash table, freeing all allocated memory. */
37
b1f1fa96 38extern void hash_die (struct hash_control *);
54d22525
ILT
39
40/* Insert an entry into a hash table. This returns NULL on success.
41 On error, it returns a printable string indicating the error. It
42 is considered to be an error if the entry already exists in the
43 hash table. */
44
b1f1fa96 45extern const char *hash_insert (struct hash_control *,
818236e5 46 const char *key, void *value);
54d22525
ILT
47
48/* Insert or replace an entry in a hash table. This returns NULL on
49 success. On error, it returns a printable string indicating the
50 error. If an entry already exists, its value is replaced. */
51
b1f1fa96 52extern const char *hash_jam (struct hash_control *,
818236e5 53 const char *key, void *value);
54d22525 54
7e70f1af
L
55/* Replace an existing entry in a hash table. This returns the old
56 value stored for the entry. If the entry is not found in the hash
57 table, this does nothing and returns NULL. */
58
818236e5
AM
59extern void *hash_replace (struct hash_control *, const char *key,
60 void *value);
7e70f1af 61
54d22525
ILT
62/* Find an entry in a hash table, returning its value. Returns NULL
63 if the entry is not found. */
64
818236e5 65extern void *hash_find (struct hash_control *, const char *key);
54d22525 66
c19d1205
ZW
67/* As hash_find, but KEY is of length LEN and is not guaranteed to be
68 NUL-terminated. */
69
818236e5 70extern void *hash_find_n (struct hash_control *, const char *key, size_t len);
c19d1205 71
7e70f1af
L
72/* Delete an entry from a hash table. This returns the value stored
73 for that entry, or NULL if there is no such entry. */
74
818236e5 75extern void *hash_delete (struct hash_control *, const char *key, int);
7e70f1af 76
54d22525
ILT
77/* Traverse a hash table. Call the function on every entry in the
78 hash table. */
79
b1f1fa96 80extern void hash_traverse (struct hash_control *,
818236e5 81 void (*pfn) (const char *key, void *value));
54d22525
ILT
82
83/* Print hash table statistics on the specified file. NAME is the
84 name of the hash table, used for printing a header. */
85
b1f1fa96
KH
86extern void hash_print_statistics (FILE *, const char *name,
87 struct hash_control *);
54d22525
ILT
88
89#endif /* HASH_H */
This page took 0.687158 seconds and 4 git commands to generate.