/* * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab * Copyright (C) ????-2008 - INRIA * * This file must be used under the terms of the CeCILL. * This source file is licensed as described in the file COPYING, which * you should have received as part of this distribution. The terms * are also available at * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt * */ #include "../../routines/machine.h" /******************************************* * External type for intersci * creating a new external type * ccalc12 : the wrapped function which returns a handler * to a dynamically allocated object * ccalc12f : function for the wrapper which <> * Array to Scilab data *******************************************/ typedef struct array { int m, n; double *val; } Array ; C2F(ccalc12) ( a, m, n, err) Array **a; int *m, *n, *err ; { int i; *a = ( Array *) malloc( sizeof(Array)); if ( *a == (Array *) 0) { *err = 1; sciprint("No more space\n"); } *m = (*a)->m = 1; *n = (*a)->n = 10; (*a)->val = (double *) malloc( (unsigned) (*m) * (*n) * sizeof(double)); if ( (*a)->val == (double *) 0 ) { *err = 1; sciprint("No more space\n"); } *err = 0; for ( i = 0 ; i < (*m) * (*n) ; i++) { (*a)->val[i] = i ; } } C2F(ccalc12f)(n, ip, op) int *n; Array **ip; double *op; { int i; if ( *n > 0 ) { for (i = 0; i < *n; i++) { op[i] = (*ip)->val[i]; } free((char *)(*ip)->val); free((char *)(*ip)); } }