hash.h
上传用户:itx_2006
上传日期:2007-01-06
资源大小:493k
文件大小:2k
源码类别:

编译器/解释器

开发平台:

Others

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