20 /* LinkedHashNode *****************************************************/
22 struct LinkedHashNode * allocateLinkedHashNode(int key, int data, struct LinkedHashNode *next);
23 struct LinkedHashNode * noargallocateLinkedHashNode();
25 struct LinkedHashNode {
26 struct LinkedHashNode *next;
27 struct LinkedHashNode *lnext,*lprev;
32 /* SimpleList *********************************************************/
34 struct SimpleList * allocateSimpleList();
35 void SimpleListadd(struct SimpleList *, int data);
36 int SimpleListcontains(struct SimpleList *,int data);
37 void SimpleListreset(struct SimpleList *);
38 int SimpleListhasMoreElements(struct SimpleList *);
39 int SimpleListnextElement(struct SimpleList *);
42 struct LinkedHashNode head;
43 struct LinkedHashNode *ptr;
47 /* WorkList *********************************************************/
48 #define WLISTSIZE 4*100
50 struct WorkList * allocateWorkList();
51 void freeWorkList(struct WorkList *);
52 void WorkListreset(struct WorkList *);
53 void WorkListadd(struct WorkList *,int id, int type, int lvalue, int rvalue);
54 int WorkListhasMoreElements(struct WorkList *);
55 int WorkListgetid(struct WorkList *);
56 int WorkListgettype(struct WorkList *);
57 int WorkListgetlvalue(struct WorkList *);
58 int WorkListgetrvalue(struct WorkList *);
59 void WorkListpop(struct WorkList *);
63 struct ListNode *head;
64 struct ListNode *tail;
71 struct ListNode *next;
74 /* SimpleHash *********************************************************/
76 struct SimpleHash * noargallocateSimpleHash();
77 struct SimpleHash * allocateSimpleHash(int size);
78 void SimpleHashaddChild(struct SimpleHash *thisvar, struct SimpleHash * child);
79 void freeSimpleHash(struct SimpleHash *);
82 int SimpleHashadd(struct SimpleHash *, int key, int data);
83 int SimpleHashremove(struct SimpleHash *,int key, int data);
84 bool SimpleHashcontainskey(struct SimpleHash *,int key);
85 bool SimpleHashcontainskeydata(struct SimpleHash *,int key, int data);
86 int SimpleHashget(struct SimpleHash *,int key, int* data);
87 int SimpleHashcountdata(struct SimpleHash *,int data);
88 void SimpleHashaddParent(struct SimpleHash *,struct SimpleHash* parent);
89 int SimpleHashfirstkey(struct SimpleHash *);
90 struct SimpleIterator* SimpleHashcreateiterator(struct SimpleHash *);
91 void SimpleHashiterator(struct SimpleHash *, struct SimpleIterator * it);
92 int SimpleHashcount(struct SimpleHash *, int key);
93 void SimpleHashaddAll(struct SimpleHash *, struct SimpleHash * set);
94 struct SimpleHash * SimpleHashimageSet(struct SimpleHash *, int key);
99 struct SimpleNode **bucket;
100 struct ArraySimple *listhead;
101 struct ArraySimple *listtail;
104 struct SimpleHash* parents[10];
105 struct SimpleHash* children[10];
109 inline int SimpleHashcountset(struct SimpleHash * thisvar);
111 /* SimpleHashExcepion *************************************************/
114 /* SimpleIterator *****************************************************/
115 #define ARRAYSIZE 100
118 struct SimpleNode *next;
125 struct SimpleNode nodes[ARRAYSIZE];
126 struct ArraySimple * nextarray;
130 struct SimpleIterator {
131 struct ArraySimple *cur, *tail;
135 inline struct SimpleIterator * noargallocateSimpleIterator();
137 inline struct SimpleIterator * allocateSimpleIterator(struct ArraySimple *start, struct ArraySimple *tl, int tlindex);
139 inline int hasNext(struct SimpleIterator *thisvar);
141 inline int next(struct SimpleIterator *thisvar);
143 inline int key(struct SimpleIterator *thisvar);
145 struct RepairHashNode * allocateRepairHashNode(int setrelation, int rule, int lvalue, int rvalue, int data, int data2,int ismodify);
149 struct RepairHashNode {
150 struct RepairHashNode *next;
151 struct RepairHashNode *lnext;
161 struct RepairHash * noargallocateRepairHash();
162 struct RepairHash * allocateRepairHash(int size);
163 void freeRepairHash(struct RepairHash *);
164 int RepairHashaddset(struct RepairHash *, int setv, int rule, int value, int data);
165 int RepairHashaddrelation(struct RepairHash *, int relation, int rule, int lvalue, int rvalue, int data);
166 int RepairHashaddrelation2(struct RepairHash *, int relation, int rule, int lvalue, int rvalue, int data, int data2);
167 bool RepairHashcontainsset(struct RepairHash *, int setv, int rule, int value);
168 bool RepairHashcontainsrelation(struct RepairHash *, int relation, int rule, int lvalue, int rvalue);
169 int RepairHashgetset(struct RepairHash *, int setv, int rule, int value);
170 int RepairHashgetrelation(struct RepairHash *, int relation, int rule, int lvalue, int rvalue);
171 int RepairHashgetrelation2(struct RepairHash *, int relation, int rule, int lvalue, int rvalue);
172 int RepairHashismodify(struct RepairHash *, int relation, int rule, int lvalue, int rvalue);
177 struct RepairHashNode **bucket;
178 struct RepairHashNode *nodelist;