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 void print() = 0;
17 virtual Set *getRange() = 0;
21 class FunctionOperator : public Function {
26 OverFlowBehavior overflowbehavior;
27 FunctionOperator(ArithOp op, Set **domain, uint numDomain, Set *range, OverFlowBehavior overflowbehavior);
28 uint64_t applyFunctionOperator(uint numVals, uint64_t *values);
29 bool isInRangeFunction(uint64_t val);
30 Function *clone(CSolver *solver, CloneMap *map);
31 virtual void serialize(Serializer *serialiezr);
33 Set *getRange() {return range;}
37 class FunctionTable : public Function {
40 UndefinedBehavior undefBehavior;
41 FunctionTable (Table *table, UndefinedBehavior behavior);
42 Function *clone(CSolver *solver, CloneMap *map);
43 virtual void serialize(Serializer *serialiezr);