11 Function(FunctionType _type) : type(_type) {}
13 virtual ~Function() {}
14 virtual Function *clone(CSolver *solver, CloneMap *map) {ASSERT(0); return NULL;}
15 virtual Set * getRange() = 0;
19 class FunctionOperator : public Function {
24 OverFlowBehavior overflowbehavior;
25 FunctionOperator(ArithOp op, Set **domain, uint numDomain, Set *range, OverFlowBehavior overflowbehavior);
26 uint64_t applyFunctionOperator(uint numVals, uint64_t *values);
27 bool isInRangeFunction(uint64_t val);
28 Function *clone(CSolver *solver, CloneMap *map);
29 Set * getRange() {return range;}
33 class FunctionTable : public Function {
36 UndefinedBehavior undefBehavior;
37 FunctionTable (Table *table, UndefinedBehavior behavior);
38 Function *clone(CSolver *solver, CloneMap *map);