]>
Commit | Line | Data |
---|---|---|
54d22525 | 1 | /* hash.c -- gas hash table code |
a2c58332 | 2 | Copyright (C) 1987-2022 Free Software Foundation, Inc. |
252b5132 RH |
3 | |
4 | This file is part of GAS, the GNU Assembler. | |
5 | ||
6 | GAS is free software; you can redistribute it and/or modify | |
7 | it under the terms of the GNU General Public License as published by | |
ec2655a6 | 8 | the Free Software Foundation; either version 3, or (at your option) |
252b5132 RH |
9 | any later version. |
10 | ||
11 | GAS is distributed in the hope that it will be useful, | |
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
14 | GNU General Public License for more details. | |
15 | ||
16 | You should have received a copy of the GNU General Public License | |
54d22525 | 17 | along with GAS; see the file COPYING. If not, write to the Free |
4b4da160 NC |
18 | Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA |
19 | 02110-1301, USA. */ | |
54d22525 | 20 | |
252b5132 | 21 | #include "as.h" |
abebb03c | 22 | |
fe0e921f AM |
23 | /* Insert ELEMENT into HTAB. If REPLACE is non-zero existing elements |
24 | are overwritten. If ELEMENT already exists, a pointer to the slot | |
25 | is returned. Otherwise NULL is returned. */ | |
abebb03c | 26 | |
fe0e921f AM |
27 | void ** |
28 | htab_insert (htab_t htab, void *element, int replace) | |
abebb03c ML |
29 | { |
30 | void **slot = htab_find_slot (htab, element, INSERT); | |
fe0e921f AM |
31 | if (*slot != NULL) |
32 | { | |
33 | if (replace) | |
34 | { | |
35 | if (htab->del_f) | |
36 | (*htab->del_f) (*slot); | |
37 | *slot = element; | |
38 | } | |
39 | return slot; | |
40 | } | |
abebb03c | 41 | *slot = element; |
fe0e921f | 42 | return NULL; |
abebb03c ML |
43 | } |
44 | ||
45 | /* Print statistics about a hash table. */ | |
46 | ||
47 | void | |
48 | htab_print_statistics (FILE *f, const char *name, htab_t table) | |
49 | { | |
50 | fprintf (f, "%s hash statistics:\n", name); | |
51 | fprintf (f, "\t%u searches\n", table->searches); | |
52 | fprintf (f, "\t%u collisions\n", table->collisions); | |
53 | fprintf (f, "\t%lu elements\n", (unsigned long) htab_elements (table)); | |
54 | fprintf (f, "\t%lu table size\n", (unsigned long) htab_size (table)); | |
55 | } |