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