home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / pccts.zip / pccts / antlr / hash.h < prev    next >
C/C++ Source or Header  |  1994-03-31  |  2KB  |  60 lines

  1. /*
  2.  * hash.h -- define hash table entries, sizes, hash function...
  3.  *
  4.  * $Id: hash.h,v 1.1 1994/02/17 19:11:20 parrt Exp parrt $
  5.  * $Revision: 1.1 $
  6.  *
  7.  * SOFTWARE RIGHTS
  8.  *
  9.  * We reserve no LEGAL rights to the Purdue Compiler Construction Tool
  10.  * Set (PCCTS) -- PCCTS is in the public domain.  An individual or
  11.  * company may do whatever they wish with source code distributed with
  12.  * PCCTS or the code generated by PCCTS, including the incorporation of
  13.  * PCCTS, or its output, into commerical software.
  14.  * 
  15.  * We encourage users to develop software with PCCTS.  However, we do ask
  16.  * that credit is given to us for developing PCCTS.  By "credit",
  17.  * we mean that if you incorporate our source code into one of your
  18.  * programs (commercial product, research project, or otherwise) that you
  19.  * acknowledge this fact somewhere in the documentation, research report,
  20.  * etc...  If you like PCCTS and have developed a nice tool with the
  21.  * output, please mention that you developed it using PCCTS.  In
  22.  * addition, we ask that this header remain intact in our source code.
  23.  * As long as these guidelines are kept, we expect to continue enhancing
  24.  * this system and expect to make other tools available as they are
  25.  * completed.
  26.  *
  27.  * ANTLR 1.20
  28.  * Terence Parr
  29.  * Purdue University
  30.  * With AHPCRC, University of Minnesota
  31.  * 1989-1994
  32.  */
  33.  
  34.                 /* H a s h  T a b l e  S t u f f */
  35.  
  36. #ifndef HashTableSize
  37. #define HashTableSize    553
  38. #endif
  39. #ifndef StrTableSize
  40. #define StrTableSize    30000
  41. #endif
  42.  
  43. typedef struct _entry {        /* Minimum hash table entry -- superclass */
  44.             char *str;
  45.             struct _entry *next;
  46.         } Entry;
  47.  
  48. /* Hash 's' using 'size', place into h (s is modified) */
  49. #define Hash(s,h,size)                                \
  50.     {while ( *s != '\0' ) h = (h<<1) + *s++;        \
  51.     h %= size;}
  52.  
  53. #ifdef __STDC__
  54. Entry    *hash_get(Entry **, char *),
  55.         **newHashTable(void),
  56.         *hash_add(Entry **, char *, Entry *);
  57. #else
  58. Entry *hash_get(), **newHashTable(), *hash_add();
  59. #endif
  60.