|
|
1.1 root 1: /* hash.h - for hash.c
2: Copyright (C) 1987 Free Software Foundation, Inc.
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
8: the Free Software Foundation; either version 1, or (at your option)
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
17: along with GAS; see the file COPYING. If not, write to
18: the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
19:
20: struct hash_entry
21: {
22: char * hash_string; /* points to where the symbol string is */
23: /* NULL means slot is not used */
24: /* DELETED means slot was deleted */
25: char * hash_value; /* user's datum, associated with symbol */
26: };
27:
28:
29: #define HASH_STATLENGTH (6)
30: struct hash_control
31: {
32: struct hash_entry * hash_where; /* address of hash table */
33: int hash_sizelog; /* Log of ( hash_mask + 1 ) */
34: int hash_mask; /* masks a hash into index into table */
35: int hash_full; /* when hash_stat[STAT_USED] exceeds this, */
36: /* grow table */
37: struct hash_entry * hash_wall; /* point just after last (usable) entry */
38: /* here we have some statistics */
39: int hash_stat[HASH_STATLENGTH]; /* lies & statistics */
40: /* we need STAT_USED & STAT_SIZE */
41: };
42:
43:
44: /* returns */
45: extern struct hash_control *hash_new( /* [control block] */
46: void);
47: extern char *hash_insert( /* error string */
48: struct hash_control *handle,
49: char *string,
50: char *value);
51: extern char *hash_apply( /* 0 means OK */
52: struct hash_control *handle,
53: char *(*function)(char *hash_string, char *hash_value));
54: extern char *hash_find( /* value */
55: struct hash_control *handle,
56: char *string);
57: extern char *hash_jam( /* error text (internal) */
58: struct hash_control *handle,
59: char *string,
60: char *value);
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.