#ifndef GNUMERIC_SYMBOL_H #define GNUMERIC_SYMBOL_H typedef enum { SYMBOL_FUNCTION, SYMBOL_VALUE, SYMBOL_STRING } SymbolType; typedef struct { GHashTable *hash; } SymbolTable; typedef struct { int ref_count; SymbolType type; char *str; SymbolTable *st; void *data; } Symbol; SymbolTable *symbol_table_new (void); void symbol_table_destroy (SymbolTable *st); Symbol *symbol_lookup (SymbolTable *st, char *str); Symbol *symbol_lookup_substr (SymbolTable *st, char *buffer, int len); Symbol *symbol_install (SymbolTable *st, char *str, SymbolType type, void *data); void symbol_ref (Symbol *); void symbol_unref (Symbol *); void symbol_unref_ptr (Symbol **); Symbol *symbol_ref_string (SymbolTable *st, char *str); void global_symbol_init (void); extern SymbolTable *global_symbol_table; #endif /* GNUMERIC_SYMBOL_H */