home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / perl560.zip / x2p / hash.h < prev    next >
C/C++ Source or Header  |  1999-07-20  |  1KB  |  53 lines

  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 );
  53.