* Sync comment with code's reality.
[dragonfly.git] / contrib / perl5 / x2p / hash.h
1 /* $RCSfile: hash.h,v $$Revision: 4.1 $$Date: 92/08/07 18:29:21 $
2  *
3  *    Copyright (c) 1991-1997, 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  */
10
11 #define FILLPCT 60              /* don't make greater than 99 */
12
13 #ifdef DOINIT
14 char coeff[] = {
15                 61,59,53,47,43,41,37,31,29,23,17,13,11,7,3,1,
16                 61,59,53,47,43,41,37,31,29,23,17,13,11,7,3,1,
17                 61,59,53,47,43,41,37,31,29,23,17,13,11,7,3,1,
18                 61,59,53,47,43,41,37,31,29,23,17,13,11,7,3,1,
19                 61,59,53,47,43,41,37,31,29,23,17,13,11,7,3,1,
20                 61,59,53,47,43,41,37,31,29,23,17,13,11,7,3,1,
21                 61,59,53,47,43,41,37,31,29,23,17,13,11,7,3,1,
22                 61,59,53,47,43,41,37,31,29,23,17,13,11,7,3,1};
23 #else
24 extern char coeff[];
25 #endif
26
27 typedef struct hentry HENT;
28
29 struct hentry {
30     HENT        *hent_next;
31     char        *hent_key;
32     STR         *hent_val;
33     int         hent_hash;
34 };
35
36 struct htbl {
37     HENT        **tbl_array;
38     int         tbl_max;
39     int         tbl_fill;
40     int         tbl_riter;      /* current root of iterator */
41     HENT        *tbl_eiter;     /* current entry of iterator */
42 };
43
44 bool hdelete _((HASH *tb, char *key));
45 STR * hfetch _(( HASH *tb, char *key ));
46 int hiterinit _(( HASH *tb ));
47 char * hiterkey _(( HENT *entry ));
48 HENT * hiternext _(( HASH *tb ));
49 STR * hiterval _(( HENT *entry ));
50 HASH * hnew _(( void ));
51 void hsplit _(( HASH *tb ));
52 bool hstore _(( HASH *tb, char *key, STR *val ));