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