Scilab-Branch-6.1-GIT
- Справка Scilab
- API Scilab
- legacy
- API Scilab
- API types
- Getting started with API_Scilab
- API double functions
- API common functions
- API string functions
- API boolean functions
- API integer functions
- API list-type functions
- API polynomial functions
- API pointer functions
- API cell functions
- API struct functions
- API handle functions
- API optional functions
Please note that the recommended version of Scilab is 2025.0.0. This page might be outdated.
See the recommended documentation of this function
API list-type functions
This page lists all the functions to manipulate Scilab native lists.
scilabVar
scilab_getListItem
(
scilabEnv
env,
scilabVar
var, int index)
Get item at position index
from list-type variable var
.
scilabStatus
scilab_setListItem
(
scilabEnv
env,
scilabVar
var, int index,
scilabVar
val)
set item val
at position index
in list-type variable var
.
int scilab_getTListFieldNames
(
scilabEnv
env,
scilabVar
var, wchar_t*** fieldnames)
Get fields names of tlist variable var
and return size.
scilabVar
scilab_getTListField
(
scilabEnv
env,
scilabVar
var, const wchar_t* field)
Get field
value of tlist variable var
.
scilabStatus
scilab_setTListField
(
scilabEnv
env,
scilabVar
var, const wchar_t* field,
scilabVar
val)
Set field
value of tlist variable var
.
int scilab_getMListFieldNames
(
scilabEnv
env,
scilabVar
var, wchar_t*** fieldnames)
Get fields names of mlist variable var
and return size.
scilabVar
scilab_getMListField
(
scilabEnv
env,
scilabVar
var, const wchar_t* field)
Get field
value of mlist variable var
.
scilabStatus
scilab_setMListField
(
scilabEnv
env,
scilabVar
var, const wchar_t* field,
scilabVar
val)
Set field
value of mlist variable var
.
scilabStatus
scilab_appendToList
(
scilabEnv
env,
scilabVar
var,
scilabVar
val)
Add val
at the end of list-type var
.
int scilab_isDefined
(
scilabEnv
env,
scilabVar
var, int index)
Return 1 is item at position index
is defined.
Examples
#include "api_scilab.h" #include "Scierror.h" #include "localization.h" #include "sciprint.h" #include "sci_malloc.h" const char fname[] = "list_test"; int sci_list_test(scilabEnv env, int nin, scilabVar* in, int nopt, scilabOpt opt, int nout, scilabVar* out) { int i = 0; //input scilabVar in1 = NULL; int size1 = 0; wchar_t** fields = NULL; scilabVar in2 = NULL; int size2 = 0; //output scilabVar out1 = NULL; //goal is to take string vector and list from intput to //create a tlist of type "mylist" with fields names from string and //fields data from list. 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_isString(env, in1) == 0 || scilab_isVector(env, in1) == 0) { Scierror(999, _("%s: Wrong type for input argument #%d: A string vector expected.\n"), fname, 1); return STATUS_ERROR; } size1 = scilab_getSize(env, in1); scilab_getStringArray(env, in1, &fields); //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 (size1 != size2) { Scierror(999, _("%s: Arguments #%d and #%d: Same sizes expected.\n"), fname, 1, 2); return STATUS_ERROR; } out1 = scilab_createTList(env, L"mytlist"); for (i = 0; i < size1; ++i) { scilab_setTListField(env, out1, fields[i], 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/list_test.c",pathconvert(TMPDIR+"/api_c/list_test.c",%F)); ilib_build("liblist",["list_test","sci_list_test", "csci6"],"list_test.c",[],"","",""); exec("loader.sce"); fields = ["double","string","boolean","poly","list","cell"]; data = list(1, "2", %t, %s, list(1,2,3), {1,2;3,4}); t = list_test(fields, data); assert_checkequal(typeof(t), "mytlist"); assert_checkequal(t.double, 1); assert_checkequal(t.string, "2"); assert_checkequal(t.boolean, %t); assert_checkequal(t.poly, %s); assert_checkequal(t.list, list(1,2,3)); assert_checkequal(t.cell, {1,2;3,4});
Report an issue | ||
<< API integer functions | API Scilab | API polynomial functions >> |