変数の次元を確認 (Scilabゲートウェイ) 変数の次元を調べる C ゲートウェイ関数.

## 呼び出し手順

    int checkVarDimension(void* _pvCtx, int* _piAddress, int _iRows, int _iCols)

    int isRowVector(void* _pvCtx, int* _piAddress)

    int isColumnVector(void* _pvCtx, int* _piAddress)

    int isVector(void* _pvCtx, int* _piAddress)

    int isScalar(void* _pvCtx, int* _piAddress)

    int isSquareMatrix(void* _pvCtx, int* _piAddress)

    int isEmptyMatrix(void* _pvCtx, int* _piAddress)

## 引数

_pvCtx

  Scilab環境ポインタ, api_scilab.hで定義される "pvApiCtx" を指定

_piAddress

  Scilab変数のアドレス.

_iRows

  予定する行数

_iCols

  予定する列数

## 説明

変数の次元を調べるCゲートウェイ関数.

## 例

この例では, Cインターフェイス関数は複数の入力引数をとり, 入力の次元と複数のテスト結果を出力します.

    #include "api_scilab.h"
    #include "sciprint.h"
    int check_matrix_dimension(char * fname)
    {
        SciErr sciErr;
        int* piAddr = NULL;
        int iRows = 0;
        int iCols = 0;
        CheckInputArgument(pvApiCtx, 1, 1);
        sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddr);
        if(sciErr.iErr)
        {
            printError(&sciErr, 0);
            return 1;
        }
        sciErr = getVarDimension(pvApiCtx, piAddr, &iRows, &iCols);
        if(sciErr.iErr)
        {
            printError(&sciErr, 0);
            return 1;
        }
        if(checkVarDimension(pvApiCtx, piAddr, iCols, iRows))
        {
            sciprint("checkVarDimension returns false\n");
        }
        else
        {
            sciprint("checkVarDimension returns true\n");
        }
        if(isRowVector(pvApiCtx, piAddr))
        {
            sciprint("isRowVector\n");
        }
        if(isColumnVector(pvApiCtx, piAddr))
        {
            sciprint("isColumnVector\n");
        }
        if(isVector(pvApiCtx, piAddr))
        {
            sciprint("isVector\n");
        }
        if(isScalar(pvApiCtx, piAddr))
        {
            sciprint("isScalar\n");
        }
        if(isSquareMatrix(pvApiCtx, piAddr))
        {
            sciprint("isSquareMatrix\n");
        }
        if(isEmptyMatrix(pvApiCtx, piAddr))
        {
            sciprint("isEmptyMatrix\n");
        }
        //no return value
        AssignOutputVariable(pvApiCtx, 0) = 1;
        return 0;
    }

## Scilabテストスクリプト

    check_matrix_dimension([1,2,3;4,5,6]);
    check_matrix_dimension([1,2,3]);
    check_matrix_dimension([1;2;3]);
    check_matrix_dimension([1]);
    check_matrix_dimension([1,2;3,4]);
    check_matrix_dimension([]);

## 参照

- sciprint