- Ajuda do Scilab
- API Scilab
- Low level functions
- AssignOutputVariable
- CallOverloadFunction
- CheckInputArgument
- CheckOutputArgument
- ReturnArguments
- Boolean reading (Scilab gateway)
- Boolean writing (Scilab gateway)
- Boolean sparse reading (Scilab gateway)
- Boolean sparse writing (Scilab gateway)
- Check variable dimensions (Scilab gateway)
- Variable Reference (Scilab gateway)
- Variable dimension (Scilab gateway)
- Variable Type (Scilab gateway)
- Variable Complexity (Scilab gateway)
- Matrix Type (Scilab gateway)
- deleteNamedVariable
- Double reading (Scilab gateway)
- Double writing (Scilab gateway)
- getNbInputArgument (Scilab gateway)
- getNbOutputArgument (Scilab gateway)
- Handle reading (Scilab gateway)
- Handle writing (Scilab gateway)
- Integer Precision (Scilab gateway)
- Integer reading (Scilab gateway)
- Integer writing (Scilab gateway)
- nbInputArgument (Scilab gateway)
- Pointer reading (Scilab gateway)
- Pointer writing (Scilab gateway)
- Polynomial Symbolic Variable (Scilab gateway)
- Polynomial reading (Scilab gateway)
- Polynomial writing (Scilab gateway)
- Sparse matrix reading (Scilab gateway)
- Sparse writing (Scilab gateway)
- String reading (Scilab gateway)
- String writing (Scilab gateway)
Please note that the recommended version of Scilab is 2025.0.0. This page might be outdated.
However, this page did not exist in the previous stable version.
Pointer writing (Scilab gateway)
How to write pointer in a gateway.
Calling Sequence
Input argument profile:
SciErr createPointer(void* _pvCtx, int _iVar, void* _pvPtr)
Named variable profile:
SciErr createNamedPointer(void* _pvCtx, const char* _pstName, void** _pvPtr)
Arguments
- _pvCtx
Scilab environment pointer, pass in "pvApiCtx" provided by api_scilab.h
- _iVar
Position in the Scilab memory where you want to put the variable
- _pstName
Name of the variable for "named" functions.
- _pvPtr
Address of pointer.
- SciErr
Error structure where is stored errors messages history and first error number.
Calling Sequence
SciErr allocPointer(void* _pvCtx, int _iVar, void** _pvPtr)
Arguments
- _pvCtx
Scilab environment pointer, pass in "pvApiCtx" provided by api_scilab.h.
- _piAddress
Address of the Scilab variable.
- _pvPtr
Return address of pointer.
- SciErr
Error structure where is stored errors messages history and first error number.
Description
This help describes how pointer can be handled through the Scilab API.
Two types of functions can be used to write in the memory of Scilab.
Gateway Source
#include "api_scilab.h" int read_pointer(char *fname,unsigned long fname_len) { SciErr sciErr; CheckInputArgument(pvApiCtx, 0, 1); CheckOutputArgument(pvApiCtx, 1, 1); if(nbInputArgument(pvApiCtx) == 0) {//create mode double* pdblData = (double*)malloc(sizeof(double) * 2 * 2); pdblData[0] = 1; pdblData[1] = 3; pdblData[2] = 2; pdblData[3] = 4; sciErr = createPointer(pvApiCtx, nbInputArgument(pvApiCtx) + 1, (void*)pdblData); } else if(nbInputArgument(pvApiCtx) == 1) {//read mode int iType = 0; int* piAddr = NULL; void* pvPtr = NULL; double* pdblData = NULL; sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddr); if(sciErr.iErr) { printError(&sciErr, 0); return 0; } sciErr = getPointer(pvApiCtx, piAddr, &pvPtr); if(sciErr.iErr) { printError(&sciErr, 0); return 0; } pdblData = (double*)pvPtr; sciErr = createMatrixOfDouble(pvApiCtx, nbInputArgument(pvApiCtx) + 1, 2, 2, pdblData); } else { return 0; } if(sciErr.iErr) { printError(&sciErr, 0); return 0; } AssignOutputVariable(pvApiCtx, 1) = nbInputArgument(pvApiCtx) + 1; return 0; }
Scilab test script
Report an issue | ||
<< Pointer reading (Scilab gateway) | Low level functions | Polynomial Symbolic Variable (Scilab gateway) >> |