X-Git-Url: http://plrg.eecs.uci.edu/git/?p=satune.git;a=blobdiff_plain;f=src%2FAST%2Ffunction.c;h=c8163637a905fae6b93f623c9f7812cac8252acc;hp=d4b693e3fa71980a20a0770d4de381ec4fc0052c;hb=c507619d06bc6fbddc5fc26016be9bb47daa0ae0;hpb=fc1dd990c4a5d55165ff08da878fbda71dee83cf;ds=inline diff --git a/src/AST/function.c b/src/AST/function.c index d4b693e..c816363 100644 --- a/src/AST/function.c +++ b/src/AST/function.c @@ -1 +1,34 @@ #include "function.h" +#include "table.h" +#include "set.h" + + +Function* allocFunctionOperator( ArithOp op, Set ** domain, uint numDomain, Set * range,OverFlowBehavior overflowbehavior){ + FunctionOperator* This = (FunctionOperator*) ourmalloc(sizeof(FunctionOperator)); + GETFUNCTIONTYPE(This)=OPERATORFUNC; + This->domains = allocVectorArraySet(numDomain, domain); + This->op=op; + This->overflowbehavior = overflowbehavior; + This->range=range; + return &This->base; +} + +Function* allocFunctionTable (Table* table){ + FunctionTable* This = (FunctionTable*) ourmalloc(sizeof(FunctionTable)); + GETFUNCTIONTYPE(This)=TABLEFUNC; + This->table = table; + return &This->base; +} + +void deleteFunction(Function* This){ + switch(GETFUNCTIONTYPE(This)){ + case TABLEFUNC: + ourfree((FunctionTable*)This); + break; + case OPERATORFUNC: + ourfree((FunctionOperator*) This); + break; + default: + ASSERT(0); + } +}