String writing (Scilab gateway) — How to write matrices of string in a gateway.
Input argument profile:
SciErr createMatrixOfString(void* _pvCtx, int _iVar, int _iRows, int _iCols, char** _pstStrings)
SciErr createMatrixOfWideString(void* _pvCtx, int _iVar, int _iRows, int _iCols, wchar_t** _pwstStrings)
Named variable profile:
SciErr createNamedMatrixOfString(void* _pvCtx, char* _pstName, int _iRows, int _iCols, char** _pstStrings)
SciErr createNamedMatrixOfWideString(void* _pvCtx, char* _pstName, int _iRows, int _iCols, wchar_t** _pwstStrings)
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.
Number of rows of the new variable
Numbers of columns of the new variable
Address of array of char* (size: _iCols * _iRows)
Error structure where is stored errors messages history and first error number.
int write_string(char *fname,unsigned long fname_len) { SciErr sciErr; //variable info : matrix of string 2 x 3 int iRows = 2; int iCols = 3; char** pstData = NULL; //data to put in the new variable char string11[] = "may"; char string21[] = "be"; char string12[] = "the"; char string22[] = "with"; char string13[] = "puffin"; char string23[] = "you"; //alloc new array pstData = (char**)malloc(sizeof(char*) * iRows * iCols); //copy data address to the "main" array pstData[0] = string11; pstData[1] = string21; pstData[2] = string12; pstData[3] = string22; pstData[4] = string13; pstData[5] = string23; //create the variable sciErr = createMatrixOfString(pvApiCtx, Rhs + 1, iRows, iCols, pstData); if(sciErr.iErr) { printError(&sciErr, 0); return 0; } //free container free(pstData); //assign allocated variables to Lhs position LhsVar(1) = Rhs + 1; return 0; }