source: trunk/third/gcc/cpphash.h @ 8834

Revision 8834, 1.3 KB checked in by ghudson, 28 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r8833, which included commits to RCS files with non-trunk default branches.
Line 
1/* different kinds of things that can appear in the value field
2   of a hash node.  Actually, this may be useless now. */
3union hashval {
4  int ival;
5  char *cpval;
6  DEFINITION *defn;
7#if 0
8  KEYDEF *keydef;
9#endif
10};
11
12struct hashnode {
13  struct hashnode *next;        /* double links for easy deletion */
14  struct hashnode *prev;
15  struct hashnode **bucket_hdr; /* also, a back pointer to this node's hash
16                                   chain is kept, in case the node is the head
17                                   of the chain and gets deleted. */
18  enum node_type type;          /* type of special token */
19  int length;                   /* length of token, for quick comparison */
20  U_CHAR *name;                 /* the actual name */
21  union hashval value;          /* pointer to expansion, or whatever */
22};
23
24typedef struct hashnode HASHNODE;
25
26/* Some definitions for the hash table.  The hash function MUST be
27   computed as shown in hashf () below.  That is because the rescan
28   loop computes the hash value `on the fly' for most tokens,
29   in order to avoid the overhead of a lot of procedure calls to
30   the hashf () function.  Hashf () only exists for the sake of
31   politeness, for use when speed isn't so important. */
32
33#define HASHSIZE 1403
34static HASHNODE *hashtab[HASHSIZE];
35#define HASHSTEP(old, c) ((old << 2) + c)
36#define MAKE_POS(v) (v & 0x7fffffff) /* make number positive */
37
38extern HASHNODE* install PARAMS ((U_CHAR*,int,enum node_type, int,char*,int));
Note: See TracBrowser for help on using the repository browser.