// htab.h - Structures and declarations needed for table hashing. // // $Id: htab.h,v 1.8 2005/10/16 20:48:14 sdennis Exp $ // #include "copyright.h" #ifndef __HTAB_H #define __HTAB_H #include "db.h" #include "svdhash.h" 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 { CLinearTimeAbsolute waittime; // time to run command dbref executor; // executor who will do command dbref caller; // caller. dbref enactor; // enactor causing command (for %N) dbref sem; // blocking semaphore int attr; // blocking attribute int nargs; // How many args I have char *text; // buffer for comm, env, and scr text char *comm; // command char *env[NUM_ENV_VARS]; // environment vars char *scr[MAX_GLOBAL_REGS]; // temp vars bool IsTimed; // Is there a waittime time on this entry? }; class CBitField { unsigned int nBitsPer; unsigned int nShift; unsigned int nMask; unsigned int nMaximum; size_t nInts; UINT32 *pInts; UINT32 *pMasks; public: CBitField(unsigned int max = 0); void Resize(unsigned int max); ~CBitField(void); void ClearAll(void); void Set(unsigned int i); void Clear(unsigned int i); bool IsSet(unsigned int i); }; extern void hashreset(CHashTable *); extern void *hashfindLEN(const void *Str, size_t nStr, CHashTable *htab); extern int hashaddLEN(const void *Str, size_t nStr, void *hashdata, CHashTable *htab); extern void hashdeleteLEN(const void *Str, size_t nStr, CHashTable *htab); extern void hashflush(CHashTable *); extern bool hashreplLEN(const void *Str, size_t nStr, void *hashdata, CHashTable *htab); extern void hashreplall(const void *, void *, CHashTable *); extern void *hash_nextentry(CHashTable *htab); extern void *hash_firstentry(CHashTable *htab); extern void *hash_firstkey(CHashTable *htab, int *, char **); extern void *hash_nextkey(CHashTable *htab, int *, char **); extern NAMETAB powers_nametab[]; extern bool search_nametab(dbref, NAMETAB *, char *, int *); extern NAMETAB *find_nametab_ent(dbref, NAMETAB *, char *); extern void display_nametab(dbref, NAMETAB *, char *, bool); extern void interp_nametab(dbref, NAMETAB *, int, const char *, const char *, const char *); extern void listset_nametab(dbref, NAMETAB *, int, char *, bool); #endif // !__HTAB_H