/* Definitions for TinyMUCK hash tables */
/* Possible data types that may be stored in a hash table */
union u_hash_data {
int ival; /* Store compiler tokens here */
dbref dbval; /* Player hashing will want this */
int (*func) (); /* Function call */
void *pval; /* Can't hurt, we might need it someday */
};
/* The actual hash entry for each item */
struct t_hash_entry {
struct t_hash_entry *next; /* Pointer for conflict resolution */
const char *name; /* The name of the item */
union u_hash_data dat; /* Data value for item */
};
typedef union u_hash_data hash_data;
typedef struct t_hash_entry hash_entry;
typedef hash_entry *hash_tab;
#define PLAYER_HASH_SIZE (1 << 8) /* Table for player lookups */
extern hash_data *find_hash (const char *s, hash_tab * table, unsigned size);
extern hash_entry *add_hash (const char *name, hash_data data,
hash_tab * table, unsigned size);
extern int free_hash (const char *name, hash_tab * table, unsigned size);
extern void kill_hash (hash_tab * table, unsigned size);