Boolean writing (Scilab gateway) — How to write matrices of boolean.
Input argument profile:
SciErr createMatrixOfBoolean(void* _pvCtx, int _iVar, int _iRows, int _iCols, int* _piBool)
Named variable profile:
SciErr createNamedMatrixOfBoolean(void* _pvCtx, char* _pstName, int _iRows, int _iCols, int* _piBool)
Scilab environment pointer, pass in "pvApiCtx" provided by api_scilab.h.
Position in the Scilab memory where you want to put the variable.
Name of the variable for "named" functions.
Return number of rows of the variable.
Return number of columns of the variable.
Return address of data array (size: _iRows * _iCols).
Error structure where is stored errors messages history and first error number.
Input argument profile:
SciErr allocMatrixOfBoolean(void* _pvCtx, int _iVar, int _iRows, int _iCols, int** _piBool)
Scilab environment pointer, pass in "pvApiCtx" provided by api_scilab.h.
Position in the Scilab memory where you want to put the variable.
Number of rows of the new variable.
Numbers of columns of the new variable.
Returns address of real data array (size: _iCols * _iRows).
Error structure where is stored errors messages history and first error number.
int read_write_boolean(char *fname,unsigned long fname_len) { SciErr sciErr; int i; //first variable info : real matrix of double int iRows = 0; int iCols = 0; int *piAddr = NULL; int* piBool = NULL; //check input and output arguments CheckRhs(1,1); CheckLhs(1,1); //get variable address of the first input argument sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddr); if(sciErr.iErr) { printError(&sciErr, 0); return 0; } //get size and data from Scilab memory sciErr = getMatrixOfBoolean(pvApiCtx, piAddr, &iRows, &iCols, &piBool); if(sciErr.iErr) { printError(&sciErr, 0); return 0; } //Do something with data for(i = 0 ; i < iRows * iCols ; i++) { piBool[i] = piBool[i] == 0 ? 1 : 0; } sciErr = createMatrixOfBoolean(pvApiCtx, Rhs + 1, iRows, iCols, piBool); if(sciErr.iErr) { printError(&sciErr, 0); return 0; } LhsVar(1) = Rhs + 1; return 0; }