Scilab 6.1.0
- Scilabヘルプ
- API Scilab
- legacy
- List manipulation
- isListType, isTListType, isMListType
- 論理値の読み込み (Scilabゲートウェイ)
- 論理値を書き込む (Scilabゲートウェイ)
- 疎論理値の読み込み (Scilabゲートウェイ)
- 疎論理値を書き込む (Scilabゲートウェイ)
- リストを作成する (Scilab ゲートウェイ)
- doubleの読み込み (Scilab ゲートウェイ)
- double書き込み (Scilab ゲートウェイ)
- 子要素を取得 (Scilab ゲートウェイ)
- 要素数 (Scilab ゲートウェイ)
- 整数の読み込み (Scilab ゲートウェイ)
- 整数を書き込む (Scilab ゲートウェイ)
- ポインタの読み込み (Scilab ゲートウェイ)
- ポインタ書き込み (Scilab ゲートウェイ)
- 多項式の読み込み (Scilab ゲートウェイ)
- 多項式の書き込み (Scilab ゲートウェイ)
- 疎行列の読み込み (Scilab ゲートウェイ)
- 疎行列の書き込み (Scilab ゲートウェイ)
- 文字列の読み込み (Scilab ゲートウェイ)
- 文字列の書き込み (Scilab ゲートウェイ)
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 ゲートウェイ)
リスト中にポインタを追加する方法.
呼び出し手順
入力引数プロファイル:
SciErr createPointerInList(void* _pvCtx, int _iVar, int* _piParent, int _iItemPos, void* _pvPtr)
名前指定変数プロファイル:
SciErr createPointerInNamedList(void* _pvCtx, const char* _pstName, int* _piParent, int _iItemPos, void* _pvPtr)
引数
- _pvCtx
Scilab環境ポインタ, api_scilab.hで定義された"pvApiCtx"で指定.
- _iVar
代入する変数のScilabメモリ上の位置.
- _pstName
"名前指定" 関数の変数名.
- _piParent
新規要素の親のアドレス.
- _iItemPos
リストにおける新規要素の位置.
- _pvPtr
ポインタのアドレス.
- SciErr
エラーメッセージの履歴と最初のエラー番号が保存されるエラー構造体.
説明
このヘルプはリスト中にポインタを追加する方法を説明します.
ゲートウェイのソース
#include "api_scilab.h" int list_createlist(char *fname,void* pvApiCtx) { SciErr sciErr; int *piAddr = NULL; int* piChild = NULL; double pdblData1[] = {1,3,5,2,4,6}; double pdblData2[] = {6,4,2,5,3,1}; char *pstData[] = {"may","be","the","with","puffin","you"}; short psData[] = {1,4,2,5,3,6}; double pdblPoly1[] = {1}; double pdblPoly2[] = {-2,-1}; double pdblPoly3[] = {1,2,3}; double pdblPoly4[] = {-4,-3,-2,-1}; double pdblPoly5[] = {1,2,3,4,5}; double pdblPoly6[] = {-6,-5,-4,-3,-2,-1}; double *pdblPoly[] = {pdblPoly1, pdblPoly3, pdblPoly5, pdblPoly2, pdblPoly4, pdblPoly6}; int piCoef[] = {1,3,5,2,4,6}; int piNbItemRow[] = {1,2,1}; int piColPos[] = {8,4,7,2}; double pdblSReal[] = {1,2,3,4}; double pdblSImg[] = {4,3,2,1}; int piBool[] = {1,0,1,0,1,0,1,0,1}; double* pdblDataPtr = NULL; sciErr = createList(pvApiCtx, nbInputArgument(pvApiCtx) + 1, 8, &piAddr); if(sciErr.iErr) { printError(&sciErr, 0); return 0; } sciErr = createComplexMatrixOfDoubleInList(pvApiCtx, nbInputArgument(pvApiCtx) + 1, piAddr, 1, 3, 2, pdblData1, pdblData2); if(sciErr.iErr) { printError(&sciErr, 0); return 0; } sciErr = createMatrixOfStringInList(pvApiCtx, nbInputArgument(pvApiCtx) + 1, piAddr, 2, 2, 3, pstData); if(sciErr.iErr) { printError(&sciErr, 0); return 0; } sciErr = createMatrixOfInteger16InList(pvApiCtx, nbInputArgument(pvApiCtx) + 1, piAddr, 3, 2, 3, psData); if(sciErr.iErr) { printError(&sciErr, 0); return 0; } sciErr = createMatrixOfPolyInList(pvApiCtx, nbInputArgument(pvApiCtx) + 1, piAddr, 4, "x", 3, 2, piCoef, pdblPoly); if(sciErr.iErr) { printError(&sciErr, 0); return 0; } sciErr = createComplexSparseMatrixInList(pvApiCtx, nbInputArgument(pvApiCtx) + 1, piAddr, 5, 3, 10, 4, piNbItemRow, piColPos, pdblSReal, pdblSImg); if(sciErr.iErr) { printError(&sciErr, 0); return 0; } sciErr = createMatrixOfBooleanInList(pvApiCtx, nbInputArgument(pvApiCtx) + 1, piAddr, 6, 3, 3, piBool); if(sciErr.iErr) { printError(&sciErr, 0); return 0; } sciErr = createBooleanSparseMatrixInList(pvApiCtx, nbInputArgument(pvApiCtx) + 1, piAddr, 7, 3, 10, 4, piNbItemRow, piColPos); if(sciErr.iErr) { printError(&sciErr, 0); return 0; } //add list in list sciErr = createListInList(pvApiCtx, nbInputArgument(pvApiCtx) + 1, piAddr, 8, 3, &piChild); if(sciErr.iErr) { printError(&sciErr, 0); return 0; } sciErr = createMatrixOfDoubleInList(pvApiCtx, nbInputArgument(pvApiCtx) + 1, piChild, 1, 3, 2, pdblData1); if(sciErr.iErr) { printError(&sciErr, 0); return 0; } sciErr = createSparseMatrixInList(pvApiCtx, nbInputArgument(pvApiCtx) + 1, piChild, 2, 3, 10, 4, piNbItemRow, piColPos, pdblSReal); if(sciErr.iErr) { printError(&sciErr, 0); return 0; } pdblDataPtr = (double*)malloc(sizeof(double) * 4); pdblDataPtr[0] = 1; pdblDataPtr[1] = 2; pdblDataPtr[2] = 3; pdblDataPtr[3] = 4; sciErr = createPointerInList(pvApiCtx, nbInputArgument(pvApiCtx) + 1, piChild, 3, pdblDataPtr); if(sciErr.iErr) { printError(&sciErr, 0); return 0; } AssignOutputVariable(pvApiCtx, 1) = nbInputArgument(pvApiCtx) + 1; return 0; }
Scilab テストスクリプト
size_ref = 8; type_ref = ["constant","string","int16","polynomial", "sparse", "boolean", "boolean sparse", "list"]; dim_ref = list([3,2],[2,3],[2,3],[3,2],[3,10],[3,3],[3,10],3); l = list_createlist(); if size(l) <> size_ref then error("failed"), end for i = 1 : size_ref if typeof(l(i)) <> type_ref(i) then error("failed"), end if size(l(i)) <> dim_ref(i) then error("failed"), end end
Report an issue | ||
<< ポインタの読み込み (Scilab ゲートウェイ) | List manipulation | 多項式の読み込み (Scilab ゲートウェイ) >> |