MLTestHeadWithArgCount (C 関数)
MLTestHeadWithArgCountはWSTestHeadWithArgCountに置き換えられた.
int MLTestHeadWithArgCount(MLINK l, const char *s, int *n)
l が指定するMathLink接続から読み込まれる次のオブジェクトが,頭部 s を持つ式であり,式の引数の数が n であることを検証する.
詳細
![](Files/MLTestHeadWithArgCount.ja/details_1.png)
- MLTestHeadWithArgCount()は,リンク上の現行の式が頭部としての記号を持つ関数ではない場合,記号名が s, とマッチしない場合,あるいは関数の引数の数が n ではない場合には失敗する.
- MLTestHeadWithArgCount()は,関数が結果を返す際に,関数に対する引数の実際の数を n に保存する.
- MLTestHeadWithArgCount()は,エラーが起った場合には0を,関数が成功した場合には非零の値を返す.
- MLTestHeadWithArgCount()が失敗した場合には,MLError()を使ってエラーコードを得るとよい.
- MLTestHeadWithArgCount()は,関数が失敗した場合には,MLTestHeadWithArgCount()を呼び出す直前のリンク上の式に対するストリームポインタを再設定する.この操作は,プログラマがMLCreateMark(l); MLTestHeadWithArgCount(...); MLSeekToMark(...)を呼び出したかのように振舞う.
- MLTestHeadWithArgCount()は,MathLinkヘッダファイルmathlink.hで宣言される.
例題
例 (1)
#include "mathlink.h"
/* A function to test whether the next expression on the Link is Plus[a,b] */
void f(MLINK l)
{
int args = 2;
const char *symbol;
if(! MLTestHeadWithArgCount(l, "Plus", &args))
{ /* Next expression is not Plus, or does not have two args */ }
if(! MLGetSymbol(l, &symbol))
{ /* Unable to read symbol */ }
/* Check if symbol is 'a' */
MLReleaseSymbol(l, symbol);
if(! MLGetSymbol(l, &symbol))
{ /* Unable to read symbol */ }
/* Check if the symbol is 'b' */
MLReleaseSymbol(l, symbol);
}