Scilab-Branch-6.1-GIT
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.
ハンドルの例
ハンドルの使用例.
説明
この例はハンドル変数を取得し,Scilabに返す方法を示します.
ゲートウェイのソース
#include "api_scilab.h" int handleExample(char *fname,void* pvApiCtx) { SciErr sciErr; int* piAddr = NULL; int iType = 0; int iRet = 0; CheckInputArgument(pvApiCtx, 1, 1); CheckOutputArgument(pvApiCtx, 0, 1); sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddr); if(sciErr.iErr) { printError(&sciErr, 0); return 0; } if(isHandleType(pvApiCtx, piAddr)) { if(isScalar(pvApiCtx, piAddr)) { long long llHandle = 0; iRet = getScalarHandle(pvApiCtx, piAddr, &llHandle); if(iRet) { return 0; } iRet = createScalarHandle(pvApiCtx, nbInputArgument(pvApiCtx) + 1, llHandle); if(iRet) { return 0; } } else { int iRows = 0; int iCols = 0; long long *pllHandle = NULL; sciErr = getMatrixOfHandle(pvApiCtx, piAddr, &iRows, &iCols, &pllHandle); if(sciErr.iErr) { printError(&sciErr, 0); return 0; } sciErr = createMatrixOfHandle(pvApiCtx, nbInputArgument(pvApiCtx) + 1, iRows, iCols, pllHandle); if(sciErr.iErr) { printError(&sciErr, 0); return 0; } } AssignOutputVariable(pvApiCtx, 1) = nbInputArgument(pvApiCtx) + 1; } else { AssignOutputVariable(pvApiCtx, 1) = 0; } return 0; }
Scilabテストスクリプト
a = %t; b = %f; c = [a,b;b,a;a,b;b,a]; d = c'; handleExample(a) == a handleExample(b) == b handleExample(c) == c handleExample(d) == d
履歴
バージョン | 記述 |
5.5.0 | この関数はScilab 5.5.0で追加されました |
Report an issue | ||
<< createScalarHandle | handle | hypermat >> |