/* htab.h - Structures and declarations needed for table hashing */ #include "copyright.h" #ifndef __HTAB_H #define __HTAB_H #include "db.h" typedef struct hashentry HASHENT; struct hashentry { char *target; int *data; struct hashentry *next; }; typedef struct num_hashentry NHSHENT; struct num_hashentry { int target; int *data; struct num_hashentry *next; }; typedef struct hasharray HASHARR; struct hasharray { HASHENT *element[500]; }; typedef struct num_hasharray NHSHARR; struct num_hasharray { NHSHENT *element[500]; }; typedef struct hashtable HASHTAB; struct hashtable { int hashsize; int checks; int scans; int max_scan; int hits; int entries; int deletes; int nulls; HASHARR *entry; }; typedef struct num_hashtable NHSHTAB; struct num_hashtable { int hashsize; int checks; int scans; int max_scan; int hits; int entries; int deletes; int nulls; NHSHARR *entry; }; typedef struct name_table NAMETAB; struct name_table { char *name; int minlen; int perm; int flag; }; /* BQUE - Command queue */ typedef struct bque BQUE; struct bque { BQUE *next; dbref player; /* player who will do command */ dbref cause; /* player causing command (for %N) */ dbref sem; /* blocking semaphore */ int left; /* seconds left until execution */ char *env[NUM_ENV_VARS];/* environment, from wild_match or command */ int nargs; /* How many args I have */ char *comm; /* store the command here */ }; #ifdef WANT_ANSI extern void hashinit (HASHTAB *htab, int size); extern void hashreset (HASHTAB *htab); extern int hashval (char *str, HASHTAB *htab); extern int *hashfind (char *str, HASHTAB *htab); extern int hashadd (char *str, int *hashdata, HASHTAB *htab); extern void hashdelete (char *str, HASHTAB *htab); extern void hashflush (HASHTAB *htab, int size); extern int hashrepl (char *str, int *hashdata, HASHTAB *htab); extern char *hashinfo(const char *tab_name, HASHTAB *htab); extern int *nhashfind (int val, NHSHTAB *htab); extern int nhashadd (int val, int *hashdata, NHSHTAB *htab); extern void nhashdelete (int val, NHSHTAB *htab); extern void nhashflush (NHSHTAB *htab, int size); extern int nhashrepl (int val, int *hashdata, NHSHTAB *htab); extern int search_nametab (dbref player, NAMETAB *ntab, char *flagname); extern NAMETAB *find_nametab_ent (dbref player, NAMETAB *ntab, char *flagname); extern void display_nametab (dbref player, NAMETAB *ntab, char *prefix, int list_if_none); extern void interp_nametab (dbref player, NAMETAB *ntab, int flagword, char *prefix, char *true_text, char *false_text); extern void listset_nametab (dbref player, NAMETAB *ntab, int flagword, char *prefix, int list_if_none); #else extern void hashinit (); extern void hashreset (); extern int hashval (); extern int *hashfind (); extern int hashadd (); extern void hashdelete (); extern void hashflush (); extern int hashrepl (); extern char *hashinfo(); extern int *nhashfind (); extern int nhashadd (); extern void nhashdelete (); extern void nhashflush (); extern int nhashrepl (); extern int search_nametab (); extern NAMETAB *find_nametab_ent (); extern void display_nametab (); extern void interp_nametab (); extern void listset_nametab (); #endif /* WANT_ANSI */ extern NAMETAB powers_nametab[]; #define nhashinit(h,s) hashinit((HASHTAB *)h, s) #define nhashreset(h) hashreset((HASHTAB *)h) #define nhashinfo(t,h) hashinfo(t,(HASHTAB *)h) #endif