1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
|
#include <string.h>
#include <stdio.h>
#include "stack-c.h"
/*------------------------------------------------------------
* Example of array created by C code
* converted to Scilab output variable
*------------------------------------------------------------*/
/*------- double array */
int C2F(dblearray)( a, m, n,ierr)
int *m, *n,*ierr;
double **a;
{
int i ;
*n=5 ;
*m=3 ;
*a= ( double *) malloc( (unsigned) (*m)*(*n) *sizeof(double));
if ( *a != (double *) 0)
{
*ierr=0;
for ( i= 0 ; i < (*m)*(*n) ; i++) (*a)[i] = i+1;
}
else
*ierr=1;
return(0);
}
/*--------- integer array */
int C2F(intarray)( a, m, n, ierr)
int *m, *n,*ierr;
int **a;
{
int i ;
*n=5 ;
*m=3 ;
*a= ( int *) malloc( (unsigned) (*m)*(*n) *sizeof(int));
if ( *a != (int *) 0)
{
*ierr=0;
for ( i= 0 ; i < (*m)*(*n) ; i++) (*a)[i] = i+1;
}
else
*ierr=1;
return(0);
}
/*-----------------------------------------------------------
* Example of character string created here.
* Its length is sent back as an output.
* It is converted into Scilab variable in the interface program.
* The allocated array is freed in the interface program.
*-----------------------------------------------------------*/
#define MYSTR "Scilab is ..."
int C2F(crestr)( a, m, ierr)
int *m,*ierr;
char **a;
{
*m= strlen(MYSTR);
*a= (char *) malloc((unsigned) (*m+1)*sizeof(char));
if ( *a != (char *) 0)
{
*ierr=0;
sprintf((*a),MYSTR);
}
else
{
*ierr=1;
sciprint(" malloc : No more space \r\n");
}
return(0);
}
|