8 #define GETFUNCTIONTYPE(o) (((Function *)o)->type)
12 Function(FunctionType _type) : type(_type) {}
14 virtual ~Function() {}
15 virtual Function * clone(CSolver * solver, CloneMap *map);
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);
32 class FunctionTable : public Function {
35 UndefinedBehavior undefBehavior;
36 FunctionTable (Table *table, UndefinedBehavior behavior);
37 Function * clone(CSolver * solver, CloneMap *map);