6 Function *allocFunctionOperator(ArithOp op, Set **domain, uint numDomain, Set *range, OverFlowBehavior overflowbehavior) {
7 FunctionOperator *This = (FunctionOperator *) ourmalloc(sizeof(FunctionOperator));
8 GETFUNCTIONTYPE(This) = OPERATORFUNC;
9 initArrayInitSet(&This->domains, domain, numDomain);
11 This->overflowbehavior = overflowbehavior;
16 Function *allocFunctionTable (Table *table, UndefinedBehavior undefBehavior) {
17 FunctionTable *This = (FunctionTable *) ourmalloc(sizeof(FunctionTable));
18 GETFUNCTIONTYPE(This) = TABLEFUNC;
20 This->undefBehavior = undefBehavior;
24 uint64_t applyFunctionOperator(FunctionOperator *This, uint numVals, uint64_t *values) {
28 return values[0] + values[1];
31 return values[0] - values[1];
38 bool isInRangeFunction(FunctionOperator *This, uint64_t val) {
39 return existsInSet(This->range, val);
42 void deleteFunction(Function *This) {
43 switch (GETFUNCTIONTYPE(This)) {
47 deleteInlineArraySet(&((FunctionOperator *) This)->domains);