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){
17 FunctionTable* This = (FunctionTable*) ourmalloc(sizeof(FunctionTable));
18 GETFUNCTIONTYPE(This)=TABLEFUNC;
23 uint64_t applyFunctionOperator(FunctionOperator* This, uint numVals, uint64_t * values) {
27 return values[0] + values[1];
30 return values[0] - values[1];
37 bool isInRangeFunction(FunctionOperator *This, uint64_t val) {
38 return existsInSet(This->range, val);
41 void deleteFunction(Function* This){
42 switch(GETFUNCTIONTYPE(This)){
46 deleteInlineArraySet(&((FunctionOperator*) This)->domains);