~ubuntu-branches/ubuntu/lucid/graphviz/lucid-security

« back to all changes in this revision

Viewing changes to tools/ast/hashkey.h

  • Committer: Bazaar Package Importer
  • Author(s): Stephen M Moraco
  • Date: 2002-02-05 18:52:12 UTC
  • Revision ID: james.westby@ubuntu.com-20020205185212-8i04c70te00rc40y
Tags: upstream-1.7.16
ImportĀ upstreamĀ versionĀ 1.7.16

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#pragma prototyped
 
2
/*
 
3
 * Glenn Fowler
 
4
 * AT&T Research
 
5
 *
 
6
 * 1-6 char lower-case keyword -> long hash
 
7
 * digit args passed as HASHKEYN('2')
 
8
 */
 
9
 
 
10
#ifndef _HASHKEY_H
 
11
#define _HASHKEY_H
 
12
 
 
13
#define HASHKEYMAX                      6
 
14
#define HASHKEYBIT                      5
 
15
#define HASHKEYOFF                      ('a'-1)
 
16
#define HASHKEYPART(h,c)                (((h)<<HASHKEYBIT)+HASHKEY1(c))
 
17
 
 
18
#define HASHKEYN(n)                     ((n)-'0'+'z'+1)
 
19
 
 
20
#define HASHKEY1(c1)                    ((c1)-HASHKEYOFF)
 
21
#define HASHKEY2(c1,c2)                 HASHKEYPART(HASHKEY1(c1),c2)
 
22
#define HASHKEY3(c1,c2,c3)              HASHKEYPART(HASHKEY2(c1,c2),c3)
 
23
#define HASHKEY4(c1,c2,c3,c4)           HASHKEYPART(HASHKEY3(c1,c2,c3),c4)
 
24
#define HASHKEY5(c1,c2,c3,c4,c5)        HASHKEYPART(HASHKEY4(c1,c2,c3,c4),c5)
 
25
#define HASHKEY6(c1,c2,c3,c4,c5,c6)     HASHKEYPART(HASHKEY5(c1,c2,c3,c4,c5),c6)
 
26
 
 
27
#define HASHNKEY1(n,c1)                 HASHKEY2((n)+HASHKEYOFF,c1)
 
28
#define HASHNKEY2(n,c2,c1)              HASHKEY3((n)+HASHKEYOFF,c2,c1)
 
29
#define HASHNKEY3(n,c3,c2,c1)           HASHKEY4((n)+HASHKEYOFF,c3,c2,c1)
 
30
#define HASHNKEY4(n,c4,c3,c2,c1)        HASHKEY5((n)+'a',c4,c3,c2,c1)
 
31
#define HASHNKEY5(n,c5,c4,c3,c2,c1)     HASHKEY6((n)+'a',c5,c4,c3,c2,c1)
 
32
 
 
33
#if _BLD_ast && defined(__EXPORT__)
 
34
#define extern          __EXPORT__
 
35
#endif
 
36
 
 
37
extern long     strkey(const char*);
 
38
 
 
39
#undef  extern
 
40
 
 
41
#endif