home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / PERL4036.ZIP / hash.h < prev    next >
C/C++ Source or Header  |  1993-02-08  |  2KB  |  73 lines

  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();
  73.