MLGetByteSymbol (C 関数)
MLGetByteSymbolはWSGetByteSymbolに置き換えられた.
int MLGetByteSymbol(MLINK link,const unsigned char **sp,int *len,long spec)
link で指定されたMathLink接続から記号の名前に該当する文字列を得て,結果として与えられた文字列を sp に,そして文字数を len に保持しておく. コード spec は Wolframシステム上の文字コードが255より大きい任意の文字に使われる.
詳細
- MLGetByteSymbol()は文字コードの配列にメモリを割り当てる.このメモリを開放するためには,MLReleaseByteSymbol()を呼び出さなければならない.MLGetByteSymbol()が不成功で関数の返す値がエラーを示している場合には,sp に含まれている値についてMLReleaseByteSymbol()を呼び出してはならない.
- MLGetByteSymbol() は特殊文字が現れない状況では便利である.
- MLGetByteSymbol()で使用される文字コードは,Wolframシステム内でToCharacterCodeが返すコードと同一である.
- MLGetByteSymbol()で返される文字コードの配列は,空白文字で終らない.
- 改行のような文字は,等のASCII形式ではなく,原始文字コードで特定される.
- MLGetByteSymbol()は不変のデータを返す.
- MLGetByteSymbol()はエラーがあると0を返し,関数が成功すると0以外の値を返す.
- MLError()を使うと,MLGetByteSymbol()が不成功の場合にエラーコードを引き出すことができる.
- MLGetByteSymbol()は,MathLinkヘッダファイルmathlink.hの中で宣言される.
例題
例 (1)
#include "mathlink.h"
/* read a symbol encoded with codes from ToCharacterCode[] from a link */
void f(MLINK lp)
{
const unsigned char *symbol;
int length;
if(! MLGetByteSymbol(lp, &symbol, &length, 0))
{
/* unable to read the byte-encoded symbol from lp */
return;
}
/* ... */
MLReleaseByteSymbol(lp, symbol, length);
}