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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
|
/*
* Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
* Copyright (C) 2010 - DIGITEO - Sylvestre LEDRU
*
* 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
*
*/
#ifndef __JAVASCI2_HELPER_H__
#define __JAVASCI2_HELPER_H__
/**
* This header describes a serie of helper functions.
* This function should be only used when writing a wrapper of Scilab into an
* other language (Java).
* All these functions are based on api_scilab. They provide a simple profile
* to be easily integrate into a SWIG wrapper.
*/
#ifndef ENABLE_HELPERS
#error "This file cannot be used directly"
#endif
#include "BOOL.h"
#include "sci_types.h"
typedef unsigned char byte;
/**
* If the variable is complex or not
*
* @param variableName The name of the variable
* @return TRUE is complex, FALSE otherwise
*/
BOOL isComplex(char *variableName);
/**
* Return the precision of an integer
*
* @param variableName The name of tbe variable
* @return the type of the integer (see sci_int_types)
*/
sci_int_types getIntegerPrecision(char* variableName);
/**
* Return a matrix of double (the default type in Scilab)
*
* @param variableName The name of the variable
* @param[out] nbRow Number of rows
* @param[out] nbCol Number of cols
* @return The matrix of double (column sorted)
*/
double * getDouble(char* variableName, int *nbRow, int *nbCol);
/**
* Set a matrix of double (the default type in Scilab)
*
* @param variableName The name of the variable
* @param variable The values
* @param nbRow Number of rows
* @param nbCol Number of cols
* @return 0 if successfull, != 0 otherwise
*/
int putDouble(char* variableName, double *variable, int nbRow, int nbCol);
/**
* Return the real part of a matrix of complex double
*
* @param variableName The name of the variable
* @param[out] nbRow Number of rows
* @param[out] nbCol Number of cols
* @return The real part of a matrix of complex double (column sorted)
*/
double * getDoubleComplexReal(char* variableName, int *nbRow, int *nbCol);
/**
* Return the imaginary part of a matrix of complex double
*
* @param variableName The name of the variable
* @param[out] nbRow Number of rows
* @param[out] nbCol Number of cols
* @return The imaginary part of a matrix of complex double (column sorted)
*/
double * getDoubleComplexImg(char* variableName, int *nbRow, int *nbCol);
/**
* Set a matrix of complex double
*
* @param variableName The name of the variable
* @param variable The complex values
* @param nbRow Number of rows
* @param nbCol Number of cols
* @return 0 if successfull, != 0 otherwise
*/
int putDoubleComplex(char* variableName, double *variable, int nbRow, int nbCol, double * imag, int nbRowI, int nbColI);
/**
* Return a matrix of boolean
*
* @param variableName The name of the variable
* @param[out] nbRow Number of rows
* @param[out] nbCol Number of cols
* @return The matrix of boolean (column sorted)
*/
BOOL * getBoolean(char* variableName, int *nbRow, int *nbCol);
/**
* Set a matrix of boolean
*
* @param variableName The name of the variable
* @param variable The values
* @param nbRow Number of rows
* @param nbCol Number of cols
* @return 0 if successfull, != 0 otherwise
*/
int putBoolean(char* variableName, BOOL *variable, int nbRow, int nbCol);
/**
* Return a matrix of byte (int8)
*
* @param variableName The name of the variable
* @param[out] nbRow Number of rows
* @param[out] nbCol Number of cols
* @return The matrix of byte (column sorted)
*/
byte * getByte(char* variableName, int *nbRow, int *nbCol);
/**
* Set a matrix of byte (int8)
*
* @param variableName The name of the variable
* @param variable The values
* @param nbRow Number of rows
* @param nbCol Number of cols
* @return 0 if successfull, != 0 otherwise
*/
int putByte(char* variableName, byte *variable, int nbRow, int nbCol);
/**
* Return a matrix of unsigned byte (uint8)
*
* @param variableName The name of the variable
* @param[out] nbRow Number of rows
* @param[out] nbCol Number of cols
* @return The matrix of unsigned byte (column sorted)
*/
byte * getUnsignedByte(char* variableName, int *nbRow, int *nbCol);
/**
* Set a matrix of unsigned byte (uint8)
*
* @param variableName The name of the variable
* @param variable The values
* @param nbRow Number of rows
* @param nbCol Number of cols
* @return 0 if successfull, != 0 otherwise
*/
int putUnsignedByte(char* variableName, byte *variable, int nbRow, int nbCol);
/**
* Return a matrix of short (int16)
*
* @param variableName The name of the variable
* @param[out] nbRow Number of rows
* @param[out] nbCol Number of cols
* @return The matrix of short (column sorted)
*/
short * getShort(char* variableName, int *nbRow, int *nbCol);
/**
* Set a matrix of short (int16)
*
* @param variableName The name of the variable
* @param variable The values
* @param nbRow Number of rows
* @param nbCol Number of cols
* @return 0 if successfull, != 0 otherwise
*/
int putShort(char* variableName, short *variable, int nbRow, int nbCol);
/**
* Return a matrix of unsigned short (uint16)
*
* @param variableName The name of the variable
* @param[out] nbRow Number of rows
* @param[out] nbCol Number of cols
* @return The matrix of unsigned short (column sorted)
*/
unsigned short * getUnsignedShort(char* variableName, int *nbRow, int *nbCol);
/**
* Set a matrix of unsigned short (uint16)
*
* @param variableName The name of the variable
* @param variable The values
* @param nbRow Number of rows
* @param nbCol Number of cols
* @return 0 if successfull, != 0 otherwise
*/
int putUnsignedShort(char* variableName, unsigned short *variable, int nbRow, int nbCol);
/**
* Return a matrix of integer (int32)
*
* @param variableName The name of the variable
* @param[out] nbRow Number of rows
* @param[out] nbCol Number of cols
* @return The matrix of integer (column sorted)
*/
int * getInt(char* variableName, int *nbRow, int *nbCol);
/**
* Set a matrix of integer (int32)
*
* @param variableName The name of the variable
* @param variable The values
* @param nbRow Number of rows
* @param nbCol Number of cols
* @return 0 if successfull, != 0 otherwise
*/
int putInt(char* variableName, int *variable, int nbRow, int nbCol);
/**
* Return a matrix of unsigned integer (uint32)
*
* @param variableName The name of the variable
* @param[out] nbRow Number of rows
* @param[out] nbCol Number of cols
* @return The matrix of unsigned integer (column sorted)
*/
unsigned int * getUnsignedInt(char* variableName, int *nbRow, int *nbCol);
/**
* Set a matrix of unsigned integer (uint32)
*
* @param variableName The name of the variable
* @param variable The values
* @param nbRow Number of rows
* @param nbCol Number of cols
* @return 0 if successfull, != 0 otherwise
*/
int putUnsignedInt(char* variableName, unsigned int *variable, int nbRow, int nbCol);
/**
* Return a matrix of long (int64)
*
* @param variableName The name of the variable
* @param[out] nbRow Number of rows
* @param[out] nbCol Number of cols
* @return The matrix of long (column sorted)
*/
long * getLong(char* variableName, int *nbRow, int *nbCol);
/**
* Set a matrix of long (int64)
*
* @param variableName The name of the variable
* @param variable The values
* @param nbRow Number of rows
* @param nbCol Number of cols
* @return 0 if successfull, != 0 otherwise
*/
int putLong(char* variableName, long *variable, int nbRow, int nbCol);
/**
* Return a matrix of unsigned long (uint64)
*
* @param variableName The name of the variable
* @param[out] nbRow Number of rows
* @param[out] nbCol Number of cols
* @return The matrix of unsigned long (column sorted)
*/
unsigned long * getUnsignedLong(char* variableName, int *nbRow, int *nbCol);
/**
* Set a matrix of unsigned long (int64)
*
* @param variableName The name of the variable
* @param variable The values
* @param nbRow Number of rows
* @param nbCol Number of cols
* @return 0 if successfull, != 0 otherwise
*/
int putUnsignedLong(char* variableName, unsigned long *variable, int nbRow, int nbCol);
/**
* Return a matrix of string
*
* @param variableName The name of the variable
* @param[out] nbRow Number of rows
* @param[out] nbCol Number of cols
* @return The matrix of string (column sorted)
*/
char ** getString(char* variableName, int *nbRow, int *nbCol);
/**
* Set a matrix of string
*
* @param variableName The name of the variable
* @param variable The values
* @param nbRow Number of rows
* @param nbCol Number of cols
* @return 0 if successfull, != 0 otherwise
*/
int putString(char* variableName, char **variable, int nbRow, int nbCol);
/**
* Set a sparse matrix
*
* @param variableName The name of the variable
* @param nbRow Number of rows
* @param nbCol Number of cols
* @param nbRowItem the number of non null items by row
* @param nbRowItemL the length of the previous array
* @param colPos the column position of each non null item
* @param colPosL the length of the previous array
* @param data the double data
* @param dataL the length of the previous array
* @return 0 if successfull, != 0 otherwise
*/
int putSparse(char * variableName, int nbRow, int nbCol, int * nbRowItem, int nbRowItemL, int * colPos, int colPosL, double * data, int dataL);
/**
* Set a complex sparse matrix
*
* @param variableName The name of the variable
* @param nbRow Number of rows
* @param nbCol Number of cols
* @param nbRowItem the number of non null items by row
* @param nbRowItemL the length of the previous array
* @param colPos the column position of each non null item
* @param colPosL the length of the previous array
* @param data the double data
* @param dataL the length of the previous array
* @param imag the double data
* @param imagL the length of the previous array
* @return 0 if successfull, != 0 otherwise
*/
int putComplexSparse(char * variableName, int nbRow, int nbCol, int * nbRowItem, int nbRowItemL, int * colPos, int colPosL, double * data, int dataL, double * imag, int imagL);
/**
* Set a boolean sparse matrix
*
* @param variableName The name of the variable
* @param nbRow Number of rows
* @param nbCol Number of cols
* @param nbRowItem the number of non null items by row
* @param nbRowItemL the length of the previous array
* @param colPos the column position of each non null item
* @param colPosL the length of the previous array
* @return 0 if successfull, != 0 otherwise
*/
int putBooleanSparse(char * variableName, int nbRow, int nbCol, int * nbRowItem, int nbRowItemL, int * colPos, int colPosL);
/**
* Set a polynomial matrix
*
* @param variableName The name of the variable
* @param polyVarName The name of the polynomial variable
* @param data the double data
* @param nbRow Number of rows
* @param nbCol Number of cols
* @param nbCoef the number of coef of each polynomial
* @return 0 if successfull, != 0 otherwise
*/
int putPolynomial(char * variableName, char * polyVarName, double ** data, int nbRow, int nbCol, int * nbCoef);
/**
* Set a complex polynomial matrix
*
* @param variableName The name of the variable
* @param polyVarName The name of the polynomial variable
* @param data the double data
* @param nbRow Number of rows
* @param nbCol Number of cols
* @param imag the double data
* @param nbRowI Number of rows
* @param nbColI Number of cols
* @param nbCoef the number of coef of each polynomial
* @return 0 if successfull, != 0 otherwise
*/
int putComplexPolynomial(char * variableName, char * polyVarName, double ** data, int nbRow, int nbCol, int * nbCoef, double ** imag, int nbRowI, int nbColI, int * nbCoefI);
/**
* Check if a variable exists in Context
*
* @param variableName The name of the variable
* @return TRUE if the given variable exists, FALSE otherwise
*/
BOOL isExistingVariable(char* variableName);
/**
* Check if a variable is complex.
*
* @param variableName The name of the variable
* @return TRUE if the given variable is complex, FALSE otherwise
*/
BOOL isComplexVar(char *variableName);
#endif /* __JAVASCI2_HELPER_H__ */
|