1/************************************************************************* 2 $Header$ 3 FILE: hashtbl.h 4 DESCR: Compiler hashtable 5 AUTH: Jorn Lind 6 DATE: (C) september 1998 7*************************************************************************/ 8 9#ifndef _HASHTBL_H 10#define _HASHTBL_H 11 12#include <string.h> 13 14class hashData 15{ 16public: 17 hashData(void) { id=NULL; type=0; def=NULL; } 18 hashData(const char *s, int t, void *d) : id(s) { type=t; def=d; } 19 const char *id; 20 int type; 21 void *def; 22}; 23 24 25class hashElement 26{ 27public: 28 hashData data; 29 int first; 30 int next; 31}; 32 33 34class hashTable 35{ 36public: 37 hashTable(void); 38 ~hashTable(void); 39 void add(hashData &); 40 int exists(const char *); 41 int lookup(const char *, hashData &) const; 42 int remove(const char *); 43 void clear(void); 44 45private: 46 void reallocate_table(void); 47 unsigned int hashval(const char *) const; 48 hashElement *table; 49 int size, freepos; 50}; 51 52 53#endif /* _HASHTBL_H */ 54 55 56/* EOF */ 57