Commit | Line | Data |
---|---|---|
ca2dddd6 C |
1 | /* $RCSfile: hash.h,v $$Revision: 4.0.1.2 $$Date: 91/11/05 17:24:31 $ |
2 | * | |
3 | * Copyright (c) 1991, Larry Wall | |
4 | * | |
5 | * You may distribute under the terms of either the GNU General Public | |
6 | * License or the Artistic License, as specified in the README file. | |
7 | * | |
8 | * $Log: hash.h,v $ | |
9 | * Revision 4.0.1.2 91/11/05 17:24:31 lwall | |
10 | * patch11: random cleanup | |
11 | * | |
12 | * Revision 4.0.1.1 91/06/07 11:10:33 lwall | |
13 | * patch4: new copyright notice | |
14 | * | |
15 | * Revision 4.0 91/03/20 01:22:38 lwall | |
16 | * 4.0 baseline. | |
17 | * | |
18 | */ | |
19 | ||
20 | #define FILLPCT 80 /* don't make greater than 99 */ | |
21 | #define DBM_CACHE_MAX 63 /* cache 64 entries for dbm file */ | |
22 | /* (resident array acts as a write-thru cache)*/ | |
23 | ||
24 | #define COEFFSIZE (16 * 8) /* size of coeff array */ | |
25 | ||
26 | typedef struct hentry HENT; | |
27 | ||
28 | struct hentry { | |
29 | HENT *hent_next; | |
30 | char *hent_key; | |
31 | STR *hent_val; | |
32 | int hent_hash; | |
33 | int hent_klen; | |
34 | }; | |
35 | ||
36 | struct htbl { | |
37 | HENT **tbl_array; | |
38 | int tbl_max; /* subscript of last element of tbl_array */ | |
39 | int tbl_dosplit; /* how full to get before splitting */ | |
40 | int tbl_fill; /* how full tbl_array currently is */ | |
41 | int tbl_riter; /* current root of iterator */ | |
42 | HENT *tbl_eiter; /* current entry of iterator */ | |
43 | SPAT *tbl_spatroot; /* list of spats for this package */ | |
44 | char *tbl_name; /* name, if a symbol table */ | |
45 | #ifdef SOME_DBM | |
46 | #ifdef HAS_GDBM | |
47 | GDBM_FILE tbl_dbm; | |
48 | #else | |
49 | #ifdef HAS_NDBM | |
50 | DBM *tbl_dbm; | |
51 | #else | |
52 | int tbl_dbm; | |
53 | #endif | |
54 | #endif | |
55 | #endif | |
56 | unsigned char tbl_coeffsize; /* is 0 for symbol tables */ | |
57 | }; | |
58 | ||
59 | STR *hfetch(); | |
60 | bool hstore(); | |
61 | STR *hdelete(); | |
62 | HASH *hnew(); | |
63 | void hclear(); | |
64 | void hentfree(); | |
65 | void hfree(); | |
66 | int hiterinit(); | |
67 | HENT *hiternext(); | |
68 | char *hiterkey(); | |
69 | STR *hiterval(); | |
70 | bool hdbmopen(); | |
71 | void hdbmclose(); | |
72 | bool hdbmstore(); |