関数名 IsAt IsString StrAt AtStr 概要 #include "cpred.h"
int IsAt(T) TERM T;
int IsString(T,STRING_POINTER) TERM T; char **STRING_POINTER;
TERM StrAt(STRING) char *STRING;
char *AtStr(T) TERM T;
IsAtは、その引数がアトムの場合には1を返し、それ以外の場合には0を返します。
IsStringは、TERM Tがアトムか整数、または実数の場合には1を返し、その他の場合には0を返します。また示された文字列Tに第2引数としてポインタを返します。変換例をいくつか示します。
Prolog-term C-string abc abc 123 '123' 1.5 '1.5'
StrAtは、Cの文字列をPrologにおけるアトムの表現形式に変換します。この関数は、UnifyArgと共にPrologに結果を返すためによく使われます。たとえば UnifyArg(2, StrAt(mystring))のようになります。
AtStrは、Prologにおけるアトムの表現形式をCの文字列に変換します。この関数は、引数がアトムの場合には、Cの文字列にアトムと同じ名前でポインタを返します。引数がアトムでない場合には、0を返します。
警告! あとでPrologで必要になるので、AtStrによって返された文字列を書き換えないように注意しなければなりません。これを防ぐには、strcpyによってコピ−を作って使うか、Prologに戻る前に変更したところを取り消すようにします。