remove redundant sets
[satune.git] / src / AST / function.h
index fcb5068ad7703b296130450f6cebad838edacae5..2d65f61a009d0e4d6d744b527bbb7aadf37edf21 100644 (file)
@@ -12,19 +12,24 @@ public:
        FunctionType type;
        virtual ~Function() {}
        virtual Function *clone(CSolver *solver, CloneMap *map) {ASSERT(0); return NULL;}
+       virtual void serialize(Serializer *serialiezr) = 0;
+       virtual void print() = 0;
+       virtual Set *getRange() = 0;
        CMEMALLOC;
 };
 
 class FunctionOperator : public Function {
 public:
        ArithOp op;
-       Array<Set *> domains;
        Set *range;
        OverFlowBehavior overflowbehavior;
-       FunctionOperator(ArithOp op, Set **domain, uint numDomain, Set *range, OverFlowBehavior overflowbehavior);
+       FunctionOperator(ArithOp op, Set *range, OverFlowBehavior overflowbehavior);
        uint64_t applyFunctionOperator(uint numVals, uint64_t *values);
        bool isInRangeFunction(uint64_t val);
        Function *clone(CSolver *solver, CloneMap *map);
+       virtual void serialize(Serializer *serialiezr);
+       virtual void print();
+       Set *getRange() {return range;}
        CMEMALLOC;
 };
 
@@ -34,6 +39,9 @@ public:
        UndefinedBehavior undefBehavior;
        FunctionTable (Table *table, UndefinedBehavior behavior);
        Function *clone(CSolver *solver, CloneMap *map);
+       virtual void serialize(Serializer *serialiezr);
+       virtual void print();
+       Set *getRange();
        CMEMALLOC;
 };