/* 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 __STDC__ 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