4 /* LinkedHashNode *****************************************************/
10 LinkedHashNode *lnext,*lprev;
15 LinkedHashNode(int key, int data, LinkedHashNode *next);
20 /* SimpleList *********************************************************/
29 int contains(int data);
31 int hasMoreElements();
36 /* WorkList *********************************************************/
37 #define WLISTSIZE 4*100
41 struct ListNode *head;
42 struct ListNode *tail;
49 void add(int id, int type, int lvalue, int rvalue);
50 int hasMoreElements();
64 /* SimpleIterator *****************************************************/
66 class SimpleIterator {
74 inline SimpleIterator(LinkedHashNode *start) {
78 inline int hasNext() {
79 return (int)cur->next == 0 ? 0 : 1;
102 /* SimpleHash *********************************************************/
108 LinkedHashNode **bucket;
109 LinkedHashNode *nodelist;
112 SimpleHash* parents[10];
113 SimpleHash* children[10];
114 void addChild(SimpleHash* child);
117 SimpleHash(int size);
119 int add(int key, int data);
120 int remove(int key, int data);
121 bool contains(int key);
122 bool contains(int key, int data);
123 int get(int key, int& data);
124 int countdata(int data);
125 void addParent(SimpleHash* parent);
126 inline int firstkey() {
127 return nodelist->key;
129 inline SimpleIterator* iterator() {
130 return new SimpleIterator(nodelist);
139 /* SimpleHashExcepion *************************************************/
141 class SimpleHashException {
143 SimpleHashException();
146 class RepairHashNode {
148 RepairHashNode *next;
149 RepairHashNode *lnext;
155 RepairHashNode(int setrelation, int rule, int lvalue, int rvalue, int data);
163 RepairHashNode **bucket;
164 RepairHashNode *nodelist;
168 RepairHash(int size);
170 int addset(int setv, int rule, int value, int data);
171 int addrelation(int relation, int rule, int lvalue, int rvalue, int data);
172 bool containsset(int setv, int rule, int value);
173 bool containsrelation(int relation, int rule, int lvalue, int rvalue);
174 int getset(int setv, int rule, int value);
175 int getrelation(int relation, int rule, int lvalue, int rvalue);