MINERVA superseeded IF/Prolog.
Please see
http://www.ifcomputer.co.jp/MINERVA
for details.
We discontinued to sell IF/Prolog Dec 31. 2003.
Dedicated technical support for IF/Prolog ended Dec 31 2008.
This site is maintained as a community service only.
名前
Protect
UnProtect
概要
Protect(Term_Ptr)
UnProtect(Term_Ptr)
Term *Term_Ptr;
IF/Prologのカーベジ・コレクタが動いていて、しかもPrologの項のための領域がC側で確保されている時に、CからPrologの述語を呼び出すと問題を起こすことがあります。この問題を避けるために、C側で用意した項をカーベジ・コレクタに知らせてやらなければなりませんが、そのためにはProtect()を使います。Unprotect()は、項の値を0にすることで、その項を後で使えないように無効にし、またカーベジ・コレクタによって自動的に処理されることがないようにします。
使用例:
example()
{ TERM t;
t = Arg(1); Protect(&t);
ProOpen( .. );
ProFetch( .. );
ProClose( .. );
printt("%q\n",t);
UnProtect(&t);
return 1;
}
Cboot()
{ CPRIM("example",1,example);
}
|