sci_types 変数で利用可能な型を定義するC enum

## 説明

変数で利用可能な型を定義する C enum. この関数を使用する際には, stack-c.h を読み込む必要があります.

利用可能な型のリストを以下に示します:

- 1 - sci_matrix: doubleの行列

- 2 - sci_poly: 多項式行列

- 4 - sci_boolean: 論理値行列

- 5 - sci_sparse: 疎行列

- 6 - sci_boolean_sparse: 論理値疎行列

- 7 - sci_matlab_sparse: matlab疎行列

- 8 - sci_ints: 整数行列

- 9 - sci_handles: グラフィックハンドル

- 10 - sci_strings: 文字列行列

- 11 - sci_u_function: 未コンパイルのScilab関数

- 13 - sci_c_function: コンパイル済みのScilab関数

- 14 - sci_lib:　Scilab関数のライブラリ

- 15 - sci_list: a Scilab list

- 16 - sci_tlist: Scilab tlist

- 17 - sci_mlist: Scilab mlist

- 128 - sci_pointer (Scilab 5.2以前はsci_lufact_pointer): ポインタ

整数またはenum型は 変数の型を確認する際に使用出来ます. enum型の値には明示的な意味があるため,enum型の使用が推奨されます.

## 例

この例では, Cゲートウェイ関数は1つの引数をとります. switch case構造により, パラメータとして送信した変数の型を表示します.

    #include "api_scilab.h"
    #include "sciprint.h"
    int sci_mysci_typesrhs(char * fname, void* pvApiCtx)
    {
        int         iType = 0;
        int*        piAddr = NULL;
        SciErr      sciErr;
        sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddr);
        if(sciErr.iErr)
        {
            printError(&sciErr, 0);
            return 1;
        }
        sciErr = getVarType(pvApiCtx, piAddr, &iType);
        if(sciErr.iErr)
        {
            printError(&sciErr, 0);
            return 1;
        }
        switch(iType)
        {
        case sci_matrix:
            sciprint("A matrix of doubles\n");
            break;
        case sci_poly:
            sciprint("A matrix of polynomials\n");
            break;
        case sci_boolean:
            sciprint("A matrix of booleans\n");
            break;
        case sci_sparse:
            sciprint("A sparse matrix of doubles\n");
            break;
        case sci_boolean_sparse:
            sciprint("A sparse matrix of booleans\n");
            break;
        case sci_matlab_sparse:
            sciprint("A sparse matlab matrix\n");
            break;
        case sci_ints:
            sciprint("A matrix of integers\n");
            break;
        case sci_handles:
            sciprint("A graphic handle\n");
            break;
        case sci_strings:
            sciprint("A matrix of strings\n");
            break;
        case sci_u_function:
            sciprint("An uncompiled Scilab function\n");
            break;
        case sci_c_function:
            sciprint("A compiled Scilab function\n");
            break;
        case sci_lib:
            sciprint("A library of Scilab functions\n");
            break;
        case sci_list:
            sciprint("A Scilab list\n");
            break;
        case sci_tlist:
            sciprint("A Scilab tlist\n");
            break;
        case sci_mlist:
            sciprint("A Scilab mlist\n");
            break;
        case sci_pointer:
            sciprint("A pointer\n");
            break;
        default:
            sciprint("Unknown type !\n"); // Should never happen
        }
        return 0;
    }

## 参照

- sciprint