ake
[satune.git] / src / AST / function.c
index c9d0717d0212a1060b92233d9a015b79ba47375c..daa3dc38b3868af935a4b639869feb548424249e 100644 (file)
@@ -4,30 +4,33 @@
 
 
 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;
+       FunctionOperator* This = (FunctionOperator*) ourmalloc(sizeof(FunctionOperator));
+       GETFUNCTIONTYPE(This)=OPERATORFUNC;
+       This->numDomains=numDomain;
+       This->domains = ourmalloc(numDomain * sizeof(Set *));
+       memcpy(This->domains, domain, numDomain * sizeof(Set *));
+       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;
+       FunctionTable* This = (FunctionTable*) ourmalloc(sizeof(FunctionTable));
+       GETFUNCTIONTYPE(This)=TABLEFUNC;
+       This->table = table;
+       return &This->base;
 }
 
 void deleteFunction(Function* This){
-    switch( GETFUNCTIONTYPE(This)){
+       switch(GETFUNCTIONTYPE(This)){
        case TABLEFUNC:
-           ourfree((FunctionTable*)This);
-           break;
+               break;
        case OPERATORFUNC:
-           ourfree((FunctionOperator*) This);
-           break;
+               ourfree(((FunctionOperator*) This)->domains);
+               break;
        default:
-           ASSERT(0);
-    }
+               ASSERT(0);
+       }
+       ourfree(This);
 }