<?xml version="1.0" encoding="UTF-8"?>
<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:html="http://www.w3.org/1999/xhtml" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="CheckInputArgument" xml:lang="ja">
    <refnamediv>
        <refname>CheckInputArgument</refname>
        <refpurpose>
            Scilab関数コール時の入力引数の数を確認するC関数.
        </refpurpose>
    </refnamediv>
    <refsynopsisdiv>
        <title>呼び出し手順</title>
        <synopsis>CheckInputArgument(void* pvCtx, int iMin, int iMax)</synopsis>
    </refsynopsisdiv>
    <refsection>
        <title>引数</title>
        <variablelist>
            <varlistentry>
                <term>pvApiCtx</term>
                <listitem>
                    <para>
                        Scilab環境ポインタ, api_scilab.hで定義される "pvApiCtx" を指定
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>iMin</term>
                <listitem>
                    <para>
                        Scilab関数コール時に必要な入力引数の最小値
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>iMax</term>
                <listitem>
                    <para>
                        Scilab関数コール時に必要な入力引数の最大値
                    </para>
                </listitem>
            </varlistentry>
        </variablelist>
    </refsection>
    <refsection>
        <title>説明</title>
        <para>
            Scilab関数コール時の入力引数を確認するC関数.
            この関数を使用するには api_scilab.h をインクルードする必要があります.
        </para>
        <para>
            引数の数が_iMin および _iMax の間でない場合,
            Cインターフェイスを終了(<literal>return 0;</literal>)し,
            Scilabコンソールにエラーが返されます.
        </para>
        <para>
            <literal>CheckInputArgument</literal> は <literal>
                return
                0;
            </literal>
            をゲートウェイ関数内で行うため,
            メモリリークを避けるために
            この関数をメモリ確保処理の前にコールすることが必要です.
        </para>
        <para>
            この関数は廃止予定の <literal>CheckRhs</literal> 関数
            を置き換えるものです.
        </para>
    </refsection>
    <refsection>
        <title>例</title>
        <para>
            この例では, Cゲートウェイ関数は
            入力引数の数が 2と3の間であることを確認します.
        </para>
        <programlisting role="example"><![CDATA[
#include <api_scilab.h>
int sci_mycheckrhs(char * fname)
{
  CheckInputArgument(pvApiCtx, 2, 3);
  // 入力引数を読み込む
  // 何らかの処理を行う
  // 出力引数を返す
  return 0;
}
 ]]></programlisting>
        <para>ここで, このインターフェイスをテストするために関数を実行します:</para>
        <programlisting role="example"><![CDATA[
mycheckrhs(A,B); // OK, 入力引数2個
mycheckrhs(A,B,C); // OK, 入力引数3個
mycheckrhs(A); // エラー, 入力引数1個
mycheckrhs(A,B,C,D); // エラー, 入力引数4個]]></programlisting>
    </refsection>
    <refsection role="see also">
        <title>参照</title>
        <simplelist type="inline">
            <member>
                <link linkend="CheckOutputArgument">CheckOutputArgument</link>
            </member>
        </simplelist>
    </refsection>
</refentry>
