fixing elementSet and TablePredicate
authorHamed <hamed.gorjiara@gmail.com>
Tue, 20 Jun 2017 19:16:10 +0000 (12:16 -0700)
committerHamed <hamed.gorjiara@gmail.com>
Tue, 20 Jun 2017 19:16:10 +0000 (12:16 -0700)
src/AST/boolean.h
src/AST/element.c
src/AST/element.h
src/AST/ops.h
src/AST/predicate.h
src/Encoders/naiveelementencoder.c
src/classlist.h
src/csolver.c

index 0222fc74e930c10e6cb93cb19051d633bf0ce6fb..9b7c121ba398fc36aaba9b98103db920c7b22ba9 100644 (file)
@@ -35,19 +35,17 @@ struct BooleanLogic {
        Boolean * right;
 };
 
-struct BooleanComp {
-       Boolean base;
-       CompOp op;
-       Boolean * left;
-       Boolean * right;
-};
-
 struct BooleanPredicate{
     Boolean base;
     Predicate * predicate;
     VectorElement* inputs;
 };
 
+struct TablePredicate{
+    BooleanPredicate predicate;
+    Table* table;
+};
+
 
 Boolean * allocBoolean(VarType t);
 Boolean * allocBooleanOrder(Order * order, uint64_t first, uint64_t second);
index 3746d250f10e748119f485fd14ecc082de9940d2..1fb49aacc63f0f8087b5b1ad5d8284ff4cea4e45 100644 (file)
@@ -1,12 +1,12 @@
 #include "element.h"
 #include "structs.h"
-//FIXME: ELEMENTSET?
-Element *allocElement(Set * s) {
-       Element * tmp=(Element *)ourmalloc(sizeof(Element));
+
+Element *allocElementSet(Set * s) {
+       ElementSet * tmp=(ElementSet *)ourmalloc(sizeof(ElementSet));
        GETELEMENTTYPE(tmp)= ELEMSET;
        tmp->set=s;
        tmp->encoding=NULL;
-       return tmp;
+       return &tmp->base;
 }
 
 Element* allocElementFunction(Function * function, Element ** array, uint numArrays, Boolean * overflowstatus){
index 0a23d8889d2a88d9a310934b3ea3788374cdfa8c..986e380e0f03c9eb83ae1f299d4e3b95dc8abbcd 100644 (file)
 //FIXME:TALK ABOUT ELEMENT
 struct Element {
        ElementType type;
-       Set * set;
-       ElementEncoding * encoding;
 };
 
 struct ElementSet {
     Element base;
     Set * set;
+    ElementEncoding * encoding;
 };
 
 struct ElementFunction{
@@ -26,7 +25,7 @@ struct ElementFunction{
     Boolean * overflowstatus;
 };
 
-Element * allocElement(Set *s);
+Element * allocElementSet(Set *s);
 Element* allocElementFunction(Function * function, Element ** array, uint numArrays, Boolean * overflowstatus);
 void deleteElement(Element *This);
 #endif
index 9fa296630bc46bc415cf1af1a7d9c437dd8f67a0..19decc296b7be53ec4780f44ac93f4c627542693 100644 (file)
@@ -23,7 +23,7 @@ typedef enum OrderType OrderType;
 enum OverFlowBehavior {IGNORE, WRAPAROUND, FLAGFORCESOVERFLOW, OVERFLOWSETSFLAG, FLAGIFFOVERFLOW, NOOVERFLOW};
 typedef enum OverFlowBehavior OverFlowBehavior;
 
-enum BooleanType {ORDERCONST, BOOLEANVAR, LOGICOP, COMPARE, PREDICATEOP};
+enum BooleanType {ORDERCONST, BOOLEANVAR, LOGICOP, COMPARE, PREDICATEOP, TABLEPREDICATEOP};
 typedef enum BooleanType BooleanType;
 
 enum FunctionType {TABLEFUNC, OPERATORFUNC};
index 78cf2f68ddf1daa99c0b147a29df15c4490d6e9e..513e3869d5000681826a0e90e0d2fdef951e2d4f 100644 (file)
@@ -10,11 +10,6 @@ struct Predicate {
        VectorSet* domains;
 };
 
-struct TablePredicate{
-    CompOp op;
-    Table* table;
-};
-
 
 Predicate* allocPredicate(CompOp op, Set ** domain, uint numDomain);
 void deletePredicate(Predicate* predicate);
index bb6e91afca92743cfa537fcfbdc148315463b240..242a4e735e45deaf584b8f2b3a08a0c2c1d46134 100644 (file)
@@ -8,7 +8,8 @@
 
 void baseBinaryIndexElementAssign(ElementEncoding *This) {
        Element * element=This->element;
-       Set * set=element->set;
+       ASSERT(element->type == ELEMSET);
+       Set * set= ((ElementSet*)element)->set;
        ASSERT(set->isRange==false);
        uint size=getSizeVectorInt(set->members);
        uint encSize=NEXTPOW2(size);
index 3306ffe311b5e148e13824f9f5931109e7961704..4a961afef96bd360bdf4f8098a55c8416d7aefe6 100644 (file)
@@ -28,7 +28,6 @@ typedef struct Constraint Constraint;
 typedef struct BooleanOrder BooleanOrder;
 typedef struct BooleanVar BooleanVar;
 typedef struct BooleanLogic BooleanLogic;
-typedef struct BooleanComp BooleanComp;
 typedef struct BooleanPredicate BooleanPredicate;
 
 struct Boolean;
index b35680caae5b7a7a8f29710d32cdc2cae4c3edbf..4c20e33538c658d6ca17b92d98370ee0492f5f32 100644 (file)
@@ -99,7 +99,7 @@ uint64_t createUniqueItem(CSolver *solver, MutableSet * set) {
 }
 
 Element * getElementVar(CSolver *This, Set * set) {
-       Element * element=allocElement(set);
+       Element * element=allocElementSet(set);
        pushVectorElement(This->allElements, element);
        return element;
 }