2010-12-10 Tobias Burnus <burnus@net-b.de>
[deliverable/binutils-gdb.git] / gas / hash.h
CommitLineData
54d22525 1/* hash.h -- header file for gas hash table routines
aa820537 2 Copyright 1987, 1992, 1993, 1995, 1999, 2003, 2005, 2007, 2008
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);
54d22525
ILT
34
35/* Delete a hash table, freeing all allocated memory. */
36
b1f1fa96 37extern void hash_die (struct hash_control *);
54d22525
ILT
38
39/* Insert an entry into a hash table. This returns NULL on success.
40 On error, it returns a printable string indicating the error. It
41 is considered to be an error if the entry already exists in the
42 hash table. */
43
b1f1fa96 44extern const char *hash_insert (struct hash_control *,
818236e5 45 const char *key, void *value);
54d22525
ILT
46
47/* Insert or replace an entry in a hash table. This returns NULL on
48 success. On error, it returns a printable string indicating the
49 error. If an entry already exists, its value is replaced. */
50
b1f1fa96 51extern const char *hash_jam (struct hash_control *,
818236e5 52 const char *key, void *value);
54d22525 53
7e70f1af
L
54/* Replace an existing entry in a hash table. This returns the old
55 value stored for the entry. If the entry is not found in the hash
56 table, this does nothing and returns NULL. */
57
818236e5
AM
58extern void *hash_replace (struct hash_control *, const char *key,
59 void *value);
7e70f1af 60
54d22525
ILT
61/* Find an entry in a hash table, returning its value. Returns NULL
62 if the entry is not found. */
63
818236e5 64extern void *hash_find (struct hash_control *, const char *key);
54d22525 65
c19d1205
ZW
66/* As hash_find, but KEY is of length LEN and is not guaranteed to be
67 NUL-terminated. */
68
818236e5 69extern void *hash_find_n (struct hash_control *, const char *key, size_t len);
c19d1205 70
7e70f1af
L
71/* Delete an entry from a hash table. This returns the value stored
72 for that entry, or NULL if there is no such entry. */
73
818236e5 74extern void *hash_delete (struct hash_control *, const char *key, int);
7e70f1af 75
54d22525
ILT
76/* Traverse a hash table. Call the function on every entry in the
77 hash table. */
78
b1f1fa96 79extern void hash_traverse (struct hash_control *,
818236e5 80 void (*pfn) (const char *key, void *value));
54d22525
ILT
81
82/* Print hash table statistics on the specified file. NAME is the
83 name of the hash table, used for printing a header. */
84
b1f1fa96
KH
85extern void hash_print_statistics (FILE *, const char *name,
86 struct hash_control *);
54d22525
ILT
87
88#endif /* HASH_H */
This page took 0.448681 seconds and 4 git commands to generate.