home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / perl-5.003-base.tgz / perl-5.003-base.tar / fsf / perl / x2p / hash.h < prev    next >
C/C++ Source or Header  |  1995-01-19  |  1KB  |  53 lines

  1. /* $RCSfile: hash.h,v $$Revision: 4.1 $$Date: 92/08/07 18:29:21 $
  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.  */
  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.