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 {
25 OverFlowBehavior overflowbehavior;
26 FunctionOperator(ArithOp op, 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);
32 Set *getRange() {return range;}
36 class FunctionTable : public Function {
39 UndefinedBehavior undefBehavior;
40 FunctionTable (Table *table, UndefinedBehavior behavior);
41 Function *clone(CSolver *solver, CloneMap *map);
42 virtual void serialize(Serializer *serialiezr);