blob: 2ce0f5fd09ac55334b18e28aec4b75134b4bb595 (
plain)
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
|
/* $Id: symbol.h,v 1.1 2004-05-03 05:17:48 behdad Exp $
*
* Definitions for a symbol table
*/
#include "config.h"
#ifndef _SYMBOL_H
#define _SYMBOL_H
typedef struct _symbol {
struct _symbol *next; /* next symbol in list */
char *name; /* name of symbol */
unsigned short flags; /* symbol attributes */
enum { SYMVAL_NONE, SYMVAL_ENUM } valtype;
union {
struct _enumerator_list *enum_list;
} value;
} Symbol;
/* The hash table length should be a prime number. */
#define SYM_MAX_HASH 251
typedef struct _symbol_table {
Symbol *bucket[SYM_MAX_HASH]; /* hash buckets */
} SymbolTable;
/* Create symbol table */
extern SymbolTable *create_symbol_table();
/* destroy symbol table */
extern void destroy_symbol_table _((SymbolTable *symtab));
/* Lookup symbol name */
extern Symbol *find_symbol _((SymbolTable *symtab, char *name));
/* Define new symbol */
extern Symbol *new_symbol _((SymbolTable *symtab, char *name, int flags));
#endif
|