1 <?xml version="1.0" encoding="utf-8"?>
3 * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
4 * Copyright (C) 2015 - Scilab Enterprises - Antoine ELIAS
6 * Copyright (C) 2012 - 2016 - Scilab Enterprises
8 * This file is hereby licensed under the terms of the GNU GPL v2.0,
9 * pursuant to article 5.3.4 of the CeCILL v.2.1.
10 * This file was originally licensed under the terms of the CeCILL v2.1,
11 * and continues to be available under such terms.
12 * For more information, see the COPYING file which you should have received
13 * along with this program.
16 <refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="api_common" xml:lang="en">
18 <refname>API common functions</refname>
19 <para>This page lists all the functions to get information about Scilab native objects.</para>
21 <refsection id="api_common_scilab_getVar">
23 <link linkend="api_types_scilabVar">
24 <command>scilabVar</command>
26 <varname>scilab_getVar</varname>(const wchar_t* name)
29 Return variable called <varname>name</varname>, NULL if variable does not exist.
32 <refsection id="api_common_scilab_getClone">
34 <link linkend="api_types_scilabVar">
35 <command>scilabVar</command>
37 <varname>scilab_getClone</varname>(
38 <link linkend="api_types_scilabEnv">
39 <command>scilabEnv</command>
42 <link linkend="api_types_scilabVar">
43 <command>scilabVar</command>
48 Return a copie of <varname>var</varname>.
51 <refsection id="api_common_scilab_getType">
53 int <varname>scilab_getType</varname>(
54 <link linkend="api_types_scilabEnv">
55 <command>scilabEnv</command>
58 <link linkend="api_types_scilabVar">
59 <command>scilabVar</command>
64 Get type of <varname>var</varname>. see
65 <link linkend="sci_types">
66 <command>types</command>
73 int <varname>scilab_isDouble</varname>(
74 <link linkend="api_types_scilabEnv">
75 <command>scilabEnv</command>
78 <link linkend="api_types_scilabVar">
79 <command>scilabVar</command>
82 int <varname>scilab_isBoolean</varname>(
83 <link linkend="api_types_scilabEnv">
84 <command>scilabEnv</command>
87 <link linkend="api_types_scilabVar">
88 <command>scilabVar</command>
91 int <varname>scilab_isString</varname>(
92 <link linkend="api_types_scilabEnv">
93 <command>scilabEnv</command>
96 <link linkend="api_types_scilabVar">
97 <command>scilabVar</command>
100 int <varname>scilab_isInt</varname>(
101 <link linkend="api_types_scilabEnv">
102 <command>scilabEnv</command>
105 <link linkend="api_types_scilabVar">
106 <command>scilabVar</command>
109 int <varname>scilab_isPoly</varname>(
110 <link linkend="api_types_scilabEnv">
111 <command>scilabEnv</command>
114 <link linkend="api_types_scilabVar">
115 <command>scilabVar</command>
118 int <varname>scilab_isList</varname>(
119 <link linkend="api_types_scilabEnv">
120 <command>scilabEnv</command>
123 <link linkend="api_types_scilabVar">
124 <command>scilabVar</command>
127 int <varname>scilab_isTList</varname>(
128 <link linkend="api_types_scilabEnv">
129 <command>scilabEnv</command>
132 <link linkend="api_types_scilabVar">
133 <command>scilabVar</command>
136 int <varname>scilab_isMList</varname>(
137 <link linkend="api_types_scilabEnv">
138 <command>scilabEnv</command>
141 <link linkend="api_types_scilabVar">
142 <command>scilabVar</command>
145 int <varname>scilab_isHandle</varname>(
146 <link linkend="api_types_scilabEnv">
147 <command>scilabEnv</command>
150 <link linkend="api_types_scilabVar">
151 <command>scilabVar</command>
154 int <varname>scilab_isStruct</varname>(
155 <link linkend="api_types_scilabEnv">
156 <command>scilabEnv</command>
159 <link linkend="api_types_scilabVar">
160 <command>scilabVar</command>
163 int <varname>scilab_isCell</varname>(
164 <link linkend="api_types_scilabEnv">
165 <command>scilabEnv</command>
168 <link linkend="api_types_scilabVar">
169 <command>scilabVar</command>
172 int <varname>scilab_isPointer</varname>(
173 <link linkend="api_types_scilabEnv">
174 <command>scilabEnv</command>
177 <link linkend="api_types_scilabVar">
178 <command>scilabVar</command>
183 Return 1 if variable <varname>var</varname> has the right type.
186 <refsection id="api_common_scilab_isComplex">
188 int <varname>scilab_isComplex</varname>(
189 <link linkend="api_types_scilabEnv">
190 <command>scilabEnv</command>
193 <link linkend="api_types_scilabVar">
194 <command>scilabVar</command>
199 Return 1 if variable <varname>var</varname> is complex.
202 <refsection id="api_common_scilab_getDim">
204 int <varname>scilab_getDim</varname>(
205 <link linkend="api_types_scilabEnv">
206 <command>scilabEnv</command>
209 <link linkend="api_types_scilabVar">
210 <command>scilabVar</command>
215 Return the number of dimension of <varname>var</varname>. Note that scalar variables are 2d matrix of dimension (1, 1)
218 <refsection id="api_common_scilab_getDim2d">
220 int <varname>scilab_getDim2d</varname>(
221 <link linkend="api_types_scilabEnv">
222 <command>scilabEnv</command>
225 <link linkend="api_types_scilabVar">
226 <command>scilabVar</command>
228 var, int* row, int* col)
231 Return dimensions of a 2d variable <varname>var</varname> in <varname>row</varname> and <varname>col</varname>.
234 <refsection id="api_common_scilab_getDimArray">
236 int <varname>scilab_getDimArray</varname>(
237 <link linkend="api_types_scilabEnv">
238 <command>scilabEnv</command>
241 <link linkend="api_types_scilabVar">
242 <command>scilabVar</command>
244 var, const int** dims)
247 Return pointer on array of dimensions of a variable <varname>var</varname> in <varname>dims</varname>.
250 <refsection id="api_common_scilab_getSize">
252 int <varname>scilab_getSize</varname>(
253 <link linkend="api_types_scilabEnv">
254 <command>scilabEnv</command>
257 <link linkend="api_types_scilabVar">
258 <command>scilabVar</command>
263 Return size of variable <varname>var</varname>.
265 <para>For matrix type is the result of product of dimension and for others like list is the item count.</para>
267 <refsection id="api_common_scilab_isEmpty">
269 int <varname>scilab_isEmpty</varname>(
270 <link linkend="api_types_scilabEnv">
271 <command>scilabEnv</command>
274 <link linkend="api_types_scilabVar">
275 <command>scilabVar</command>
279 <para>Return 1 for empty matrix and empty list.</para>
281 <refsection id="api_common_scilab_isMatrix2d">
283 int <varname>scilab_isMatrix2d</varname>(
284 <link linkend="api_types_scilabEnv">
285 <command>scilabEnv</command>
288 <link linkend="api_types_scilabVar">
289 <command>scilabVar</command>
293 <para>Return 1 for matrix with 2 dimensions and scalar.</para>
295 <refsection id="api_common_scilab_isScalar">
297 int <varname>scilab_isScalar</varname>(
298 <link linkend="api_types_scilabEnv">
299 <command>scilabEnv</command>
302 <link linkend="api_types_scilabVar">
303 <command>scilabVar</command>
307 <para>Return 1 for scalar value.</para>
309 <refsection id="api_common_scilab_isSquare">
311 int <varname>scilab_isSquare</varname>(
312 <link linkend="api_types_scilabEnv">
313 <command>scilabEnv</command>
316 <link linkend="api_types_scilabVar">
317 <command>scilabVar</command>
321 <para>Return 1 for matrix with 2 dimensions and dimensions have the same size.</para>
323 <refsection id="api_common_scilab_isVector">
325 int <varname>scilab_isVector</varname>(
326 <link linkend="api_types_scilabEnv">
327 <command>scilabEnv</command>
330 <link linkend="api_types_scilabVar">
331 <command>scilabVar</command>
334 int <varname>scilab_isNVector</varname>(
335 <link linkend="api_types_scilabEnv">
336 <command>scilabEnv</command>
339 <link linkend="api_types_scilabVar">
340 <command>scilabVar</command>
343 int <varname>scilab_isRowVector</varname>(
344 <link linkend="api_types_scilabEnv">
345 <command>scilabEnv</command>
348 <link linkend="api_types_scilabVar">
349 <command>scilabVar</command>
352 int <varname>scilab_isColVector</varname>(
353 <link linkend="api_types_scilabEnv">
354 <command>scilabEnv</command>
357 <link linkend="api_types_scilabVar">
358 <command>scilabVar</command>
363 Use to check if variable <varname>var</varname> is a vector. <varname>n</varname> is the dimension to check, <code>scilab_isRowVector</code> is equivalente to <code>scilab_isNVector(env, var, 1)</code>
366 <refsection id="api_common_scilab_isHypermat">
368 int <varname>scilab_isHypermat</varname>(
369 <link linkend="api_types_scilabEnv">
370 <command>scilabEnv</command>
373 <link linkend="api_types_scilabVar">
374 <command>scilabVar</command>
378 <para>Return 1 for matrix with dimensions count is up to 2.</para>
380 <refsection id="api_common_scilab_overload">
382 int <varname>scilab_overload</varname>(
383 <link linkend="api_types_scilabEnv">
384 <command>scilabEnv</command>
387 <link linkend="api_types_scilabVar">
388 <command>scilabVar</command>
391 <link linkend="api_types_scilabVar">
392 <command>scilabVar</command>
395 <link linkend="api_types_scilabVar">
396 <command>scilabVar</command>
401 Call an overload function following type of <varname>var</varname>.
404 <varname>nin</varname>, <varname>in</varname>, <varname>nout</varname>, <varname>out</varname> must be used like in gateway prototype.
407 <refsection id="api_common_scilab_call">
409 int <varname>scilab_call</varname>(
410 <link linkend="api_types_scilabEnv">
411 <command>scilabEnv</command>
413 env, const wchar_t* name, int nin,
414 <link linkend="api_types_scilabVar">
415 <command>scilabVar</command>
418 <link linkend="api_types_scilabVar">
419 <command>scilabVar</command>
424 Call function <varname>name</varname>.
427 <varname>nin</varname>, <varname>in</varname>, <varname>nout</varname>, <varname>out</varname> must be used like in gateway prototype.
431 <title>Examples</title>
432 <programlisting role="code_gateway">
434 #include "api_scilab.h"
435 #include "Scierror.h"
436 #include "localization.h"
438 const char fname[] = "overload_test";
440 int sci_overload_test(scilabEnv env, int nin, scilabVar* in, int nopt, scilabOpt opt, int nout, scilabVar* out)
442 if (nin < 1 || nin > 2)
444 Scierror(999, _("%s: Wrong number of input arguments: %d to %d expected.\n"), fname, 1, 2);
448 //call overload function
451 return scilab_overload(env, in[0], nin, in, nout, out);
453 else // call function in[0] with in[1] as argument
455 wchar_t* name = NULL;
456 if (scilab_isString(env, in[0]) == 0 || scilab_isVector(env, in[0]) == 0)
458 Scierror(999, _("%s: Wrong type for input argument #%d: string expected.\n"), fname, 1);
462 scilab_getString(env, in[0], &name);
464 return scilab_call(env, name, nin - 1, in + 1, nout, out);
472 <title>Scilab test script</title>
473 <programlisting role="code_scilab">
475 mkdir(pathconvert(TMPDIR+"/api_c/"));
476 cd(pathconvert(TMPDIR+"/api_c/"));
477 copyfile(SCI+"/modules/api_scilab/tests/unit_tests/api_c/overload_test.c",pathconvert(TMPDIR+"/api_c/overload_test.c",%F));
479 ilib_build("liboverload",["overload_test","sci_overload_test", "csci6"],"overload_test.c",[],"","","");
483 x = overload_test("cos", a);
484 assert_checkequal(x, cos(a));
486 function x = %s_overload_test(a)
490 x = overload_test(a);
491 assert_checkequal(x, cos(a));
495 <refsection role="see also">
496 <title>See also</title>
497 <simplelist type="inline">
499 <link linkend="api_double">API double</link>
502 <link linkend="api_string">API string</link>
505 <link linkend="api_string">API boolean</link>
508 <link linkend="api_string">API int</link>
511 <link linkend="api_string">API poly</link>
514 <link linkend="api_string">API handle</link>
517 <link linkend="api_string">API list</link>
520 <link linkend="api_string">API struct</link>
523 <link linkend="api_string">API cell</link>