API cell functions
This page lists all the functions to manipulate Cell objects.
scilabVar
scilab_createCellMatrix
(
scilabEnv
env, int dim, const int* dims)
Create a cell matrix with dim
dimensions (dims
[0], dims
[1], ..., dims
[dim
-1]).
scilabVar
scilab_createCellMatrix2d
(
scilabEnv
env, int row, int col)
Create a cell matrix with 2 dimensions (row
, col
).
scilabStatus
scilab_getCellValue
(
scilabEnv
env,
scilabVar
var, int* index,
scilabVar
*val)
Get data at position (index
[0], index
[1], ..., index
[dims-1]) from var
.
scilabStatus
scilab_getCell2dValue
(
scilabEnv
env,
scilabVar
var, int row, int col,
scilabVar
*val)
Get data at position (row
, col
) from var
.
scilabStatus
scilab_setCellValue
(
scilabEnv
env,
scilabVar
var, int* index,
scilabVar
val)
Set data at position (index
[0], index
[1], ..., index
[dims-1]) in var
.
scilabStatus
scilab_setCell2dValue
(
scilabEnv
env,
scilabVar
var, int row, int col,
scilabVar
val)
Set data at position (row
, col
) in var
.
Examples
#include <ctype.h> #include "api_scilab.h" #include "Scierror.h" #include "localization.h" #include "sciprint.h" #include "sci_malloc.h" #include "os_string.h" const char fname[] = "cell_test"; int sci_cell_test(scilabEnv env, int nin, scilabVar* in, int nopt, scilabOpt opt, int nout, scilabVar* out) { int i = 0; //input int size1 = 0; scilabVar in1 = NULL; double* dims = NULL; scilabVar in2 = NULL; int size2 = 0; //output int outSize = 1; scilabVar out1 = NULL; scilabVar* vars = NULL; if (nin != 2) { Scierror(999, _("%s: Wrong number of input arguments: %d expected.\n"), fname, 2); return STATUS_ERROR; } if (nout != 1) { Scierror(999, _("%s: Wrong number of output arguments: %d expected.\n"), fname, 1); return STATUS_ERROR; } //in1 in1 = in[0]; if (scilab_isDouble(env, in1) == 0 || scilab_getSize(env, in1) != 2) { Scierror(999, _("%s: Wrong type for input argument #%d: double vector of size 2 expected.\n"), fname, 1); return STATUS_ERROR; } size1 = scilab_getSize(env, in1); scilab_getDoubleArray(env, in1, &dims); outSize = (int)dims[0] * (int)dims[1]; //in2 in2 = in[1]; if (scilab_isList(env, in2) == 0) { Scierror(999, _("%s: Wrong type for input argument #%d: A list expected.\n"), fname, 2); return STATUS_ERROR; } size2 = scilab_getSize(env, in2); if (outSize != size2) { Scierror(999, _("%s: Wrong size for input argument #%d.\n"), fname, 2); return STATUS_ERROR; } out1 = scilab_createCellMatrix2d(env, (int)dims[0], (int)dims[1]); for (i = 0; i < outSize; ++i) { scilab_setCell2dValue(env, out1, i, 0, scilab_getListItem(env, in2, i)); } out[0] = out1; return STATUS_OK; }
Scilab test script
mkdir(pathconvert(TMPDIR+"/api_c/")); cd(pathconvert(TMPDIR+"/api_c/")); copyfile(SCI+"/modules/api_scilab/tests/unit_tests/api_c/cell_test.c",pathconvert(TMPDIR+"/api_c/cell_test.c",%F)); ilib_build("libcell",["cell_test","sci_cell_test", "csci6"],"cell_test.c",[],"","",""); exec("loader.sce"); data = list(1, "2", %t, %s, list(1,2,3), {1,2;3,4}); c = cell_test([2 3], data); assert_checkequal(typeof(c), "ce"); assert_checkequal(c{1, 1}, 1); assert_checkequal(c{2, 1}, "2"); assert_checkequal(c{1, 2}, %t); assert_checkequal(c{2, 2}, %s); assert_checkequal(c{1, 3}, list(1,2,3)); assert_checkequal(c{2, 3}, {1,2;3,4});
Report an issue | ||
<< API pointer functions | API Scilab | API struct functions >> |