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();
62 /* SimpleHash *********************************************************/
69 struct SimpleNode **bucket;
70 struct ArraySimple *listhead;
71 struct ArraySimple *listtail;
76 SimpleHash* parents[10];
77 SimpleHash* children[10];
78 void addChild(SimpleHash* child);
81 SimpleHash(int size=100);
83 int add(int key, int data);
84 int remove(int key, int data);
85 bool contains(int key);
86 bool contains(int key, int data);
87 int get(int key, int& data);
88 int countdata(int data);
89 void addParent(SimpleHash* parent);
91 SimpleIterator* iterator();
92 void iterator(SimpleIterator & it);
100 /* SimpleHashExcepion *************************************************/
103 /* SimpleIterator *****************************************************/
104 #define ARRAYSIZE 100
107 struct SimpleNode *next;
114 struct SimpleNode nodes[ARRAYSIZE];
115 struct ArraySimple * nextarray;
119 class SimpleIterator {
122 struct ArraySimple *cur, *tail;
124 // SimpleHash * table;
125 inline SimpleIterator() {}
127 inline SimpleIterator(struct ArraySimple *start, struct ArraySimple *tl, int tlindex/*, SimpleHash *t*/) {
135 inline int hasNext() {
139 while((index==ARRAYSIZE)||!cur->nodes[index].inuse) {
140 if (index==ARRAYSIZE) {
146 if (cur->nodes[index].inuse)
153 return cur->nodes[index++].data;
157 return cur->nodes[index].key;
161 /* SimpleHashExcepion *************************************************/
163 class SimpleHashException {
165 SimpleHashException();
168 class RepairHashNode {
170 RepairHashNode *next;
171 RepairHashNode *lnext;
178 RepairHashNode(int setrelation, int rule, int lvalue, int rvalue, int data, int data2);
186 RepairHashNode **bucket;
187 RepairHashNode *nodelist;
191 RepairHash(int size);
193 int addset(int setv, int rule, int value, int data);
194 int addrelation(int relation, int rule, int lvalue, int rvalue, int data);
195 int addrelation(int relation, int rule, int lvalue, int rvalue, int data, int data2);
196 bool containsset(int setv, int rule, int value);
197 bool containsrelation(int relation, int rule, int lvalue, int rvalue);
198 int getset(int setv, int rule, int value);
199 int getrelation(int relation, int rule, int lvalue, int rvalue);
200 int getrelation2(int relation, int rule, int lvalue, int rvalue);