X-Git-Url: http://plrg.eecs.uci.edu/git/?p=repair.git;a=blobdiff_plain;f=Repair%2FRepairCompiler%2FMCC%2FRuntime%2FSimpleHash.h;h=094c963d2c246e05c9e81706b0df6cf50a9d7cab;hp=e1056f2c5a05b5bc210427b2f8ac0dfe62fec95d;hb=bd2eaf35e0787c01e8d51b8e60354482ddd39530;hpb=5d9906e195864dabe30e3b14d0b64af2e02551d4 diff --git a/Repair/RepairCompiler/MCC/Runtime/SimpleHash.h b/Repair/RepairCompiler/MCC/Runtime/SimpleHash.h index e1056f2..094c963 100755 --- a/Repair/RepairCompiler/MCC/Runtime/SimpleHash.h +++ b/Repair/RepairCompiler/MCC/Runtime/SimpleHash.h @@ -46,6 +46,7 @@ private: public: WorkList(); ~WorkList(); + void reset(); void add(int id, int type, int lvalue, int rvalue); int hasMoreElements(); int getid(); @@ -94,7 +95,8 @@ public: return numelements; } int count(int key); - + void addAll(SimpleHash * set); + SimpleHash * imageSet(int key); }; /* SimpleHashExcepion *************************************************/ @@ -119,22 +121,24 @@ struct ArraySimple { class SimpleIterator { public: - struct ArraySimple *cur; - int index; - SimpleHash * table; + struct ArraySimple *cur, *tail; + int index,tailindex; + // SimpleHash * table; inline SimpleIterator() {} - inline SimpleIterator(struct ArraySimple *start, SimpleHash *t) { + inline SimpleIterator(struct ArraySimple *start, struct ArraySimple *tl, int tlindex/*, SimpleHash *t*/) { cur = start; - table=t; + // table=t; index=0; + tailindex=tlindex; + tail=tl; } inline int hasNext() { + if (cur==tail && + index==tailindex) + return 0; while((index==ARRAYSIZE)||!cur->nodes[index].inuse) { - if (cur->nextarray==0 && - index==table->tailindex) - return 0; if (index==ARRAYSIZE) { index=0; cur=cur->nextarray; @@ -168,11 +172,13 @@ class RepairHashNode { RepairHashNode *next; RepairHashNode *lnext; int data; + int data2; int setrelation; int lvalue; int rvalue; int rule; - RepairHashNode(int setrelation, int rule, int lvalue, int rvalue, int data); + int ismodify; + RepairHashNode(int setrelation, int rule, int lvalue, int rvalue, int data, int data2,int ismodify); }; class RepairHash { @@ -189,10 +195,13 @@ public: ~RepairHash(); int addset(int setv, int rule, int value, int data); int addrelation(int relation, int rule, int lvalue, int rvalue, int data); + int addrelation(int relation, int rule, int lvalue, int rvalue, int data, int data2); bool containsset(int setv, int rule, int value); bool containsrelation(int relation, int rule, int lvalue, int rvalue); int getset(int setv, int rule, int value); int getrelation(int relation, int rule, int lvalue, int rvalue); + int getrelation2(int relation, int rule, int lvalue, int rvalue); + int ismodify(int relation, int rule, int lvalue, int rvalue); }; #endif