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;
50 void add(int id, int type, int lvalue, int rvalue);
51 int hasMoreElements();
63 /* SimpleHash *********************************************************/
70 struct SimpleNode **bucket;
71 struct ArraySimple *listhead;
72 struct ArraySimple *listtail;
77 SimpleHash* parents[10];
78 SimpleHash* children[10];
79 void addChild(SimpleHash* child);
82 SimpleHash(int size=100);
84 int add(int key, int data);
85 int remove(int key, int data);
86 bool contains(int key);
87 bool contains(int key, int data);
88 int get(int key, int& data);
89 int countdata(int data);
90 void addParent(SimpleHash* parent);
92 SimpleIterator* iterator();
93 void iterator(SimpleIterator & it);
101 /* SimpleHashExcepion *************************************************/
104 /* SimpleIterator *****************************************************/
105 #define ARRAYSIZE 100
108 struct SimpleNode *next;
115 struct SimpleNode nodes[ARRAYSIZE];
116 struct ArraySimple * nextarray;
120 class SimpleIterator {
123 struct ArraySimple *cur, *tail;
125 // SimpleHash * table;
126 inline SimpleIterator() {}
128 inline SimpleIterator(struct ArraySimple *start, struct ArraySimple *tl, int tlindex/*, SimpleHash *t*/) {
136 inline int hasNext() {
140 while((index==ARRAYSIZE)||!cur->nodes[index].inuse) {
141 if (index==ARRAYSIZE) {
147 if (cur->nodes[index].inuse)
154 return cur->nodes[index++].data;
158 return cur->nodes[index].key;
162 /* SimpleHashExcepion *************************************************/
164 class SimpleHashException {
166 SimpleHashException();
169 class RepairHashNode {
171 RepairHashNode *next;
172 RepairHashNode *lnext;
180 RepairHashNode(int setrelation, int rule, int lvalue, int rvalue, int data, int data2,int ismodify);
188 RepairHashNode **bucket;
189 RepairHashNode *nodelist;
193 RepairHash(int size);
195 int addset(int setv, int rule, int value, int data);
196 int addrelation(int relation, int rule, int lvalue, int rvalue, int data);
197 int addrelation(int relation, int rule, int lvalue, int rvalue, int data, int data2);
198 bool containsset(int setv, int rule, int value);
199 bool containsrelation(int relation, int rule, int lvalue, int rvalue);
200 int getset(int setv, int rule, int value);
201 int getrelation(int relation, int rule, int lvalue, int rvalue);
202 int getrelation2(int relation, int rule, int lvalue, int rvalue);
203 int ismodify(int relation, int rule, int lvalue, int rvalue);