~ubuntu-branches/ubuntu/utopic/cdrdao/utopic

« back to all changes in this revision

Viewing changes to pccts/antlr/hash.h

  • Committer: Bazaar Package Importer
  • Author(s): Andrew Suffield
  • Date: 2004-06-24 22:33:16 UTC
  • Revision ID: james.westby@ubuntu.com-20040624223316-534onzugaeeyq61j
Tags: upstream-1.1.9
ImportĀ upstreamĀ versionĀ 1.1.9

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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-2001
 
29
 */
 
30
 
 
31
                                /* H a s h  T a b l e  S t u f f */
 
32
 
 
33
#ifndef HashTableSize
 
34
#define HashTableSize   553
 
35
#endif
 
36
 
 
37
#ifndef StrTableSize
 
38
#ifdef PC32
 
39
#define StrTableSize    1000000
 
40
#endif
 
41
#endif
 
42
 
 
43
#ifndef StrTableSize
 
44
#ifdef PC
 
45
#define StrTableSize 655200
 
46
#endif
 
47
#endif
 
48
 
 
49
#ifndef StrTableSize
 
50
#define StrTableSize 1000000
 
51
#endif
 
52
 
 
53
typedef struct _entry {         /* Minimum hash table entry -- superclass */
 
54
                        char *str;
 
55
                        struct _entry *next;
 
56
                } Entry;
 
57
 
 
58
/* Hash 's' using 'size', place into h (s is modified) */
 
59
#define Hash(s,h,size)                                                          \
 
60
        {while ( *s != '\0' ) h = (h<<1) + *s++;                \
 
61
        h %= size;}
 
62
 
 
63
#ifdef __USE_PROTOS
 
64
Entry   *hash_get(Entry **, char *),
 
65
                **newHashTable(void),
 
66
                *hash_add(Entry **, char *, Entry *);
 
67
 
 
68
void    killHashTable(Entry **);
 
69
 
 
70
#else
 
71
Entry *hash_get(), **newHashTable(), *hash_add();
 
72
void    killHashTable();        /* MR9 23-Sep-97 */
 
73
#endif