doubleの例
doubleの使用例.
説明
この例はdouble変数を取得し,Scilabに戻す手順を示します.
ゲートウェイのソース
#include "api_scilab.h" int doubleExample(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(isEmptyMatrix(pvApiCtx, piAddr)) { iRet = createEmptyMatrix(pvApiCtx, nbInputArgument(pvApiCtx) + 1); if(iRet) { return iRet; } AssignOutputVariable(pvApiCtx, 1) = 0; } else if(isDoubleType(pvApiCtx, piAddr)) { if(isScalar(pvApiCtx, piAddr)) { double dblReal = 0; double dblImg = 0; if(isVarComplex(pvApiCtx, piAddr)) { iRet = getScalarComplexDouble(pvApiCtx, piAddr, &dblReal, &dblImg); if(iRet) { return iRet; } iRet = createScalarComplexDouble(pvApiCtx, nbInputArgument(pvApiCtx) + 1, dblReal, dblImg); if(iRet) { return iRet; } } else { iRet = getScalarDouble(pvApiCtx, piAddr, &dblReal); if(iRet) { return iRet; } iRet = createScalarDouble(pvApiCtx, nbInputArgument(pvApiCtx) + 1, dblReal); if(iRet) { return iRet; } } } else { int iRows = 0; int iCols = 0; double* pdblReal = NULL; double* pdblImg = NULL; if(isVarComplex(pvApiCtx, piAddr)) { sciErr = getComplexMatrixOfDouble(pvApiCtx, piAddr, &iRows, &iCols, &pdblReal, &pdblImg); if(sciErr.iErr) { printError(&sciErr, 0); return sciErr.iErr; } sciErr = createComplexMatrixOfDouble(pvApiCtx, nbInputArgument(pvApiCtx) + 1, iRows, iCols, pdblReal, pdblImg); if(sciErr.iErr) { printError(&sciErr, 0); return sciErr.iErr; } } else { sciErr = getMatrixOfDouble(pvApiCtx, piAddr, &iRows, &iCols, &pdblReal); if(sciErr.iErr) { printError(&sciErr, 0); return sciErr.iErr; } sciErr = createMatrixOfDouble(pvApiCtx, nbInputArgument(pvApiCtx) + 1, iRows, iCols, pdblReal); if(sciErr.iErr) { printError(&sciErr, 0); return sciErr.iErr; } } } AssignOutputVariable(pvApiCtx, 1) = nbInputArgument(pvApiCtx) + 1; } return 0; }
Scilabテストスクリプト
a = 1; b = %i; c = [1,2,3;4,5,6]; d = c(1:$) + c($:-1:1) * %i; doubleExample(a) == a doubleExample(b) == b doubleExample(c) == c doubleExample(d) == d
Report an issue | ||
<< createScalarComplexDouble | double | handle >> |