名前...
Move to
=> <=
Darueber Spitze
See also
ProOpen, ProFetch, ProClose
Protect, UnProtect
IF Computer > IF/Prolog > Manuals > IF/Prolog V4.1 マニュアル > IF/Prolog Interfaces > IF/PrologからC言語へのインタフェ−ス > 低レベルのインタフェイス > ProOpen, ProFetch, ProClose

ProOpen, ProFetch, ProClose

MINERVA superseeded IF/Prolog. Please see http://www.ifcomputer.co.jp/MINERVA for details.

We discontinued to sell IF/Prolog Dec 31. 2003. For current customers, we continue to provide professional support for IF/Prolog until Dec 31, 2008.

名前 ProOpen ProFetch ProClose

概要 INT ProOpoen(Goal,Cursor_Ptr) INT ProFetch(Cursor_Ptr) INT ProClose(Cursor_Ptr)

TERM Goal; CURSOR *Cursor_Ptr;

ProOpen() は項を IF/Prologに渡すのに使われ,項はPrologのゴールとして実行さ れます.そのゴールを実行するためには,ProFetch() を使用しなければなりませ ん.Cursor_Ptr は事前に確保された CURSOR 型のデータ構造を指していなければ なりません.このデータ構造は ProOpen() を呼び出すことにより初期化されます.

警告:

C述語と Cプリミティブへの引数が後で使用されるのならば,それらは新しく確保 された変数に保存されなれなければなりません.というのは,Prologのゴールを新 しく呼び出すと,これらの引数が上書きされてしまうからです !!

ProFetch() は事前に open されているゴールを活性化し,その最初の解を返しま す.それ以降の解は,ProFetch() を繰り返し呼び出すことで,(存在すれば)得ら れます.ProFetch() は,(それ以降の)解が求められた時には0 以外の値を,それ 以外の場合には 0を返します.もし何も解が見つからない場合には, Cursor_Ptr->qu_state を調べて,その理由を知ることが出来ます.

qu_state == 0: もうこれ以上解が存在しない. qu_state == -1: 例外処理(exception)が起動された. qu_state == -2: ゴールを終了させるために exit が使用された.

最初に ProFetch が呼び出される時は,ProOpen 呼び出されたすぐ後でなくてはな りません.

ProClose() は, Prologの質問を close します.ProOpen() が呼び出され,すべ ての欲しい結果が ProFetch() で得られた後で,必ず ProClose() が呼ばれなくて はなりません.複数の Prolog ゴールが open された場合には,逆順に close さ れなくてはなりません.

int member(list) TERM list; { TERM X; CURSOR cursor;

X = MkVariable(); Protect(&x);

ProOpen(MkStructure("member",2,x,list), &cursor); while (ProFetch(&cursor)) printt("%q is member of %q\n", x, list); ProClose(&cursor);

UnProtect(&x); }

read on...
IF/Prolog by Siemens
Sprache
English
Japanese
German
Server
USA
Japan
Site Access
Local Index
Local Contents
Site Contents
Site Index
Printer Friendly
For imode
For PDA
Search
document: http://www.ifcomputer.co.jp/IFProlog/Manuals/v4.1/advanced_feature/c_interface/lowli/proofc/home_de.html
published 2008/11/17 update 1996/3/31 (c) 1996-2006 IF Computer Japan
IF Computer 5-28-2 Sendagi, Bunkyo-ku Tel +81-3-5814-3352 start (AT) ifcomputer.com
Customer Support Tokyo 113-0022 Japan   http://www.ifcomputer.com
scroll to top managed with ubiCMS