11 Function(FunctionType _type) : type(_type) {}
13 virtual ~Function() {}
14 virtual Function *clone(CSolver *solver, CloneMap *map) {ASSERT(0); return NULL;}
15 virtual void serialize(Serializer* serialiezr) =0;
16 virtual Set * getRange() = 0;
20 class FunctionOperator : public Function {
25 OverFlowBehavior overflowbehavior;
26 FunctionOperator(ArithOp op, Set **domain, uint numDomain, Set *range, OverFlowBehavior overflowbehavior);
27 uint64_t applyFunctionOperator(uint numVals, uint64_t *values);
28 bool isInRangeFunction(uint64_t val);
29 Function *clone(CSolver *solver, CloneMap *map);
30 virtual void serialize(Serializer* serialiezr);
31 Set * getRange() {return range;}
35 class FunctionTable : public Function {
38 UndefinedBehavior undefBehavior;
39 FunctionTable (Table *table, UndefinedBehavior behavior);
40 Function *clone(CSolver *solver, CloneMap *map);
41 virtual void serialize(Serializer* serialiezr);