ake
authorbdemsky <bdemsky@uci.edu>
Tue, 20 Jun 2017 20:33:11 +0000 (13:33 -0700)
committerbdemsky <bdemsky@uci.edu>
Tue, 20 Jun 2017 20:33:11 +0000 (13:33 -0700)
src/AST/function.c
src/AST/function.h
src/AST/ops.h
src/AST/predicate.h

index c8163637a905fae6b93f623c9f7812cac8252acc..daa3dc38b3868af935a4b639869feb548424249e 100644 (file)
@@ -6,7 +6,9 @@
 Function* allocFunctionOperator( ArithOp op, Set ** domain, uint numDomain, Set * range,OverFlowBehavior overflowbehavior){
        FunctionOperator* This = (FunctionOperator*) ourmalloc(sizeof(FunctionOperator));
        GETFUNCTIONTYPE(This)=OPERATORFUNC;
-       This->domains = allocVectorArraySet(numDomain, domain);
+       This->numDomains=numDomain;
+       This->domains = ourmalloc(numDomain * sizeof(Set *));
+       memcpy(This->domains, domain, numDomain * sizeof(Set *));
        This->op=op;
        This->overflowbehavior = overflowbehavior;
        This->range=range;
@@ -23,12 +25,12 @@ Function* allocFunctionTable (Table* table){
 void deleteFunction(Function* This){
        switch(GETFUNCTIONTYPE(This)){
        case TABLEFUNC:
-               ourfree((FunctionTable*)This);
                break;
        case OPERATORFUNC:
-               ourfree((FunctionOperator*) This);
+               ourfree(((FunctionOperator*) This)->domains);
                break;
        default:
                ASSERT(0);
        }
+       ourfree(This);
 }
index 3f2a1a9310f2dd077cce62762535455e25c09edb..c04d6f2304ce2c32b5c78b916ae04486d052bb8b 100644 (file)
@@ -12,16 +12,17 @@ struct Function{
 };
 
 struct FunctionOperator {
-    Function base;
-    ArithOp op;
-    VectorSet* domains;
-    Set * range;
-    OverFlowBehavior overflowbehavior;
+       Function base;
+       ArithOp op;
+       uint numDomains;
+       Set ** domains;
+       Set * range;
+       OverFlowBehavior overflowbehavior;
 };
 
 struct FunctionTable{
-    Function base;
-    Table* table;
+       Function base;
+       Table* table;
 };
 
 Function* allocFunctionOperator( ArithOp op, Set ** domain, uint numDomain, Set * range,OverFlowBehavior overflowbehavior);
index 62083f7fb7ec7d26285606570c80d045529b92fb..123617b4e80ccd29f5428e96e73d3ad8bae42c78 100644 (file)
@@ -26,7 +26,7 @@ typedef enum OverFlowBehavior OverFlowBehavior;
 enum UndefinedBehavior {IGNOREBEHAVIOR, FLAGFORCEUNDEFINED, UNDEFINEDSETSFLAG, FLAGIFFUNDEFINED};
 typedef enum UndefinedBehavior UndefinedBehavior;
 
-enum BooleanType {ORDERCONST, BOOLEANVAR, LOGICOP, COMPARE, PREDICATEOP, TABLEPREDICATEOP};
+enum BooleanType {ORDERCONST, BOOLEANVAR, LOGICOP, PREDICATEOP, TABLEPREDICATEOP};
 typedef enum BooleanType BooleanType;
 
 enum FunctionType {TABLEFUNC, OPERATORFUNC};
index f9edc09e81d498bedcc4a2e441ff0ffa04e374e2..f9af5af66b2a937861431ebb0ae8d057e1da50fc 100644 (file)
@@ -14,14 +14,12 @@ struct Predicate {
 struct PredicateOperator {
        Predicate base;
        CompOp op;
-       Set** domains;
-       int numDomains;
+       Set ** domains;
+       uint numDomains;
 };
 
 struct PredicateTable {
        Predicate base;
-       Set** domains;
-       int numDomains;
        Table* table;
        UndefinedBehavior undefinedbehavior;
 };