File: ex10intc.c

package info (click to toggle)
scilab 2.6-4
  • links: PTS
  • area: non-free
  • in suites: woody
  • size: 54,632 kB
  • ctags: 40,267
  • sloc: ansic: 267,851; fortran: 166,549; sh: 10,005; makefile: 4,119; tcl: 1,070; cpp: 233; csh: 143; asm: 135; perl: 130; java: 39
file content (94 lines) | stat: -rw-r--r-- 2,254 bytes parent folder | download | duplicates (3)
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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#include "stack-c.h"

/* GetRhsVar with Lists */

typedef struct test {
  int x;
  char y[54];
} Test;

static Test myvar = { 10, "My string"};

/*----------------------------------------------
 * using a pointer to a C object at Scilab level 
 * intex10c_1 : returns a Scilab object used 
 *              to store a pointer 
 *----------------------------------------------*/

int intex10c_1(fname)
  char* fname;
{ 
  int m1=1,n1=1;
  CheckRhs(0,0);
  CheckLhs(1,1);
  CreateVarFromPtr(1,"p",&m1,&n1,&myvar);
  /* other solution :
   * CreateVar(1,"p",&m1,&n1,&l1);
   * stk(l1) = ((unsigned long int) &myvar);
   */
  LhsVar(1) =1;
  return(0);
}

/*----------------------------------------------
 * intex10c_2 : getting a pointer from Scilab 
 *----------------------------------------------*/

int intex10c_2(fname)
  char* fname;
{
  static Test *myvar1;
  int m1=1,n1=1,l1;
  CheckRhs(1,1);
  CheckLhs(0,1);
  GetRhsVar(1,"p",&m1,&n1,&l1);
  myvar1 = (Test *) ((unsigned long int) *stk(l1));
  sciprint("Test structure : int = %d , y = %s\r\n",myvar1->x,myvar1->y);
  LhsVar(1) = 0;
  return(0);
}

/*----------------------------------------------
 * intex10c_3 : returns a Scilab tlist whith second 
 *              field stored witha pointer 
 *----------------------------------------------*/

int intex10c_3(fname)
  char* fname;
{ 
  static char *Str[]={"myh","h",NULL};
  int m11=1,n11=2,m12=1,n12=1,m1=2,n1=1,l1;
  CheckRhs(0,0);
  CheckLhs(1,1);
  /* a tlist */
  CreateVar(1,"t", &m1, &n1, &l1);
  CreateListVarFromPtr(1,1,"S", &m11, &n11, Str);
  CreateListVarFromPtr(1,2,"p", &m12, &n12, &myvar);
  /*  Return variables  */
  LhsVar(1) = 1;
  return(0);
}

/*----------------------------------------------
 * intex10c_4 : get back the pointer from a Scilab tlist 
 *              created by intex10c_3
 *----------------------------------------------*/


int intex10c_4(fname)
  char* fname;
{
  static Test *myvar1;
  int m1,n1,l1,m12,n12,l12;
  CheckRhs(1,1);
  CheckLhs(0,1);
  GetRhsVar(1,"t",&m1,&n1,&l1);
  CheckLength(1,m1,2);
  GetListRhsVar(1,2,"p",&m12,&n12,&l12);
  myvar1 = (Test *) ((unsigned long int) *stk(l12));
  sciprint("Test structure : int = %d , y = %s\r\n",myvar1->x,myvar1->y);
  LhsVar(1) = 0;
  return(0);
}