1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
| /* T e m p l a t e F o r S y m b o l T a b l e M a n a g e r */
|
| /* define some hash function */
| #ifndef HASH
| #define HASH(p, h) while ( *p != '\0' ) h = (h<<1) + *p++;
| #endif
|
| /* minimum symbol table record */
| typedef struct _sym {
| char *symbol;
| struct _sym *next, *prev, **head, *scope;
| unsigned int hash;
| } Sym, *SymPtr;
|
| #ifdef __USE_PROTOS
| void zzs_init(int, int);
| void zzs_done(void);
| void zzs_add(char *, Sym *);
| Sym *zzs_get(char *);
| void zzs_del(Sym *);
| void zzs_keydel(char *);
| Sym **zzs_scope(Sym **);
| Sym *zzs_rmscope(Sym **);
| void zzs_stat(void);
| Sym *zzs_new(char *);
| Sym *zzs_newadd(char *);
| char *zzs_strdup(char *);
| #else
| void zzs_init();
| void zzs_done();
| void zzs_add();
| Sym *zzs_get();
| void zzs_del();
| void zzs_keydel();
| Sym **zzs_scope();
| Sym *zzs_rmscope();
| void zzs_stat();
| Sym *zzs_new();
| Sym *zzs_newadd();
| char *zzs_strdup();
| #endif
|
|