Remove references to MALLOC.lib + old useless Makefile.in
[scilab.git] / scilab / modules / call_scilab / examples / call_scilab / c / LabWindow / CallsciC.c
1 /* Allan CORNET */
2 /* Scilab, INRIA 2004 */
3 /* Only For Windows */
4 /*--------------------------------------------------------------------------*/
5 #pragma comment(lib, "../../../../../../bin/libScilab.lib")
6 /*--------------------------------------------------------------------------*/
7 #include <stdlib.h>
8 #include <stdio.h>
9 #include <string.h>
10 #include "call_scilab.h"
11 #include "stack-c.h"
12 /*--------------------------------------------------------------------------*/
13 /* See SCI/modules/core/includes/call_scilab.h */
14 /*--------------------------------------------------------------------------*/
15 static int example1(void)
16 {
17     static double A[] = {1, 2, 3, 4};
18     int mA = 2, nA = 2;
19     static double b[] = {4, 5};
20     int mb = 2, nb = 1;
21
22
23     /* Create Scilab matrices A and b */
24     WriteMatrix("A", &mA, &nA, A);
25     WriteMatrix("b", &mb, &nb, b);
26
27     SendScilabJob("disp('A=');");
28     SendScilabJob("disp(A);");
29     SendScilabJob("disp('b=');");
30     SendScilabJob("disp(b);");
31     SendScilabJob("disp('x=A\\b');");
32
33     if ( SendScilabJob("A,b,x=A\\b;") != 0)
34     {
35         fprintf(stdout, "Error occurred during scilab execution (SendScilabJob)\n");
36     }
37     else
38     {
39         double *cxtmp = NULL;
40         int m, n, lp, i;
41
42         /* Get m and n */
43         GetMatrixptr("x", &m, &n, &lp);
44
45         cxtmp = (double*)malloc((m * n) * sizeof(double));
46
47         ReadMatrix("x", &m, &n, cxtmp);
48
49         for (i = 0; i < m * n; i++)
50         {
51             fprintf(stdout, "x[%d] = %5.2f\n", i, cxtmp[i]);
52         }
53
54         if (cxtmp)
55         {
56             free(cxtmp);
57             cxtmp = NULL;
58         }
59     }
60     return 0;
61 }
62 /*--------------------------------------------------------------------------*/
63 static int example2(void)
64 {
65     int code = 0;
66
67     char **JOBS = NULL;
68     const int SizeJOBS = 5;
69     int i = 0;
70     int m = 0, n = 0;
71     double *cxtmp = NULL;
72
73     JOBS = (char**)malloc(sizeof(char**) * SizeJOBS);
74
75     for (i = 0; i < SizeJOBS; i++)
76     {
77         JOBS[i] = (char*)malloc(sizeof(char*) * 1024);
78     }
79
80     strcpy(JOBS[0], "A=1 ..");
81     strcpy(JOBS[1], "+3;");
82     strcpy(JOBS[2], "B = 8;");
83     strcpy(JOBS[3], "+3;");
84     strcpy(JOBS[4], "C=A+B;"); /* C = 12 */
85
86
87     for (i = 0; i < SizeJOBS; i++)
88     {
89         printf("JOBS[%d] = %s\n", i, JOBS[i]);
90     }
91
92     code = SendScilabJobs(JOBS, SizeJOBS);
93
94     if (code)
95     {
96         char lastjob[4096]; // bsiz in scilab 4096 max
97         if (GetLastJob(lastjob, 4096))
98         {
99             printf("Error %s\n", lastjob);
100         }
101     }
102
103     m = 1;
104     n = 1;
105     cxtmp = (double*)malloc((m * n) * sizeof(double));
106
107     ReadMatrix("C", &m, &n, cxtmp);
108
109     printf("Result :\n");
110     for (i = 0; i < m * n; i++)
111     {
112         fprintf(stdout, "C[%d] = %5.2f\n", i, cxtmp[i]);
113     }
114
115     for (i = 0; i < SizeJOBS; i++)
116     {
117         if (JOBS[i])
118         {
119             free(JOBS[i]);
120             JOBS[i] = NULL;
121         }
122     }
123     return 1;
124 }
125 /*--------------------------------------------------------------------------*/
126 static int example3(void)
127 {
128     SendScilabJob("plot3d();quit;");
129     printf("\nClose Graphical Windows to close this example.\n");
130     while ( ScilabHaveAGraph() )
131     {
132         ScilabDoOneEvent();
133     }
134     return 1;
135 }
136 /*--------------------------------------------------------------------------*/
137 int main(void)
138 /* int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR szCmdLine, int iCmdShow) */
139 {
140     if ( StartScilab(NULL, NULL, NULL) == FALSE )
141     {
142         printf("Error : StartScilab\n");
143     }
144     printf("\nexample 1\n");
145     example1();
146     printf("\npress return\n");
147     getchar();
148
149     printf("\nexample 2\n");
150     example2();
151     printf("\npress return\n");
152     getchar();
153
154     printf("\nexample 3\n");
155     example3();
156     printf("\npress return\n");
157     getchar();
158
159
160     if ( TerminateScilab(NULL) == FALSE )
161     {
162         printf("Error : TerminateScilab\n");
163     }
164     return 0;
165 }
166 /*--------------------------------------------------------------------------*/