WSGetByteSymbol (C 関数)

int WSGetByteSymbol(WSLINK link,const unsigned char **sp,int *len,long spec)

link で指定されたWSTP接続から記号の名前に該当する文字列を得て,結果として与えられた文字列を sp に,そして文字数を len に保持しておく. コード spec は Wolfram言語の文字コードが255より大きい任意の文字に使われる.

詳細

  • WSGetByteSymbol()は文字コードの配列にメモリを割り当てる.このメモリを開放するためには,WSReleaseByteSymbol()を呼び出さなければならない.WSGetByteSymbol()が不成功で関数の返す値がエラーを示している場合には,sp に含まれている値についてWSReleaseByteSymbol()を呼び出してはならない.
  • WSGetByteSymbol()は特殊文字が現れない状況では便利である.
  • WSGetByteSymbol()で使用される文字コードは,Wolfram言語内でToCharacterCodeが返すコードと同一である.
  • WSGetByteSymbol()で返される文字コードの配列は,空白文字で終らない.
  • 改行のような文字は,等のASCII形式ではなく,原始文字コードで特定される.
  • WSGetByteSymbol()は不変のデータを返す.
  • WSGetByteSymbol()はエラーがあると0を返し,関数が成功すると0以外の値を返す.
  • WSError()を使うと,WSGetByteSymbol()が不成功の場合にエラーコードを引き出すことができる.
  • WSGetByteSymbol()は,WSTPヘッダファイルwstp.hの中で宣言される.

例題

  (1)

#include "wstp.h"

/* read a symbol encoded with codes from ToCharacterCode[] from a link */

void f(WSLINK lp)
{
    const unsigned char *symbol;
    int length;

    if(! WSGetByteSymbol(lp, &symbol, &length, 0))
        {
            /* unable to read the byte-encoded symbol from lp */
            return;
        }

    /* ... */

    WSReleaseByteSymbol(lp, symbol, length);
}