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