perl 3.0 patch #32 patch #29, continued
[p5sagit/p5-mst-13.2.git] / hash.h
1 /* $Header: hash.h,v 3.0.1.2 90/10/15 17:33:58 lwall Locked $
2  *
3  *    Copyright (c) 1989, Larry Wall
4  *
5  *    You may distribute under the terms of the GNU General Public License
6  *    as specified in the README file that comes with the perl 3.0 kit.
7  *
8  * $Log:        hash.h,v $
9  * Revision 3.0.1.2  90/10/15  17:33:58  lwall
10  * patch29: the debugger now understands packages and evals
11  * 
12  * Revision 3.0.1.1  90/08/09  03:51:34  lwall
13  * patch19: various MSDOS and OS/2 patches folded in
14  * 
15  * Revision 3.0  89/10/18  15:18:39  lwall
16  * 3.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 NDBM
47     DBM         *tbl_dbm;
48 #else
49     int         tbl_dbm;
50 #endif
51 #endif
52     unsigned char tbl_coeffsize;        /* is 0 for symbol tables */
53 };
54
55 STR *hfetch();
56 bool hstore();
57 STR *hdelete();
58 HASH *hnew();
59 void hclear();
60 void hentfree();
61 int hiterinit();
62 HENT *hiternext();
63 char *hiterkey();
64 STR *hiterval();
65 bool hdbmopen();
66 void hdbmclose();
67 bool hdbmstore();