File: ex12c.c

package info (click to toggle)
scilab 4.0-12
  • links: PTS
  • area: non-free
  • in suites: etch, etch-m68k
  • size: 100,640 kB
  • ctags: 57,333
  • sloc: ansic: 377,889; fortran: 242,862; xml: 179,819; tcl: 42,062; sh: 10,593; ml: 9,441; makefile: 4,377; cpp: 1,354; java: 621; csh: 260; yacc: 247; perl: 130; lex: 126; asm: 72; lisp: 30
file content (59 lines) | stat: -rw-r--r-- 1,153 bytes parent folder | download | duplicates (7)
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

#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 <<converts>> 
 *         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\r\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\r\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));
  }
}