IF Computer > IF/Prolog > Manuals > IF/Prolog V4.1 マニュアル > IF/Prolog Interfaces > IF/PrologからC言語へのインタフェ−ス > 開発にさらに便利なIF/Prologライブラリ関数 > ライブラリ関数の概要 > C関数とIF/Prologを接続する関数

C関数とIF/Prologを接続する関数

IF/Prolog by Siemens
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.

関数名 Cboot CPRED CPRIM 概要 #include "cpred.h"

int Cboot()

int CPRIM(PROLOG_FUNCTOR,ARITY,C_FUNCT) char *PROLOG_FUNCTOR; int ARITY; int (*C_FUNCT)();

int CPRED(PROLOG_FUNCTOR,ARITY,C_FUNCT,SIZE) char *PROLOG_FUNCTOR; int ARITY; int (*C_FUNCT)(); int SIZE;

Cbootは、立ち上げの時にIF/Prologによって呼び出されます。標準のIF/Prologには、この名前のダミ−関数があります。ですから新しいバ−ジョンのPrologをリンクする時には、ダミ−関数ではなくCbootが呼び出されるように、プログラムの中に必ずCbootがなければなりません。Cbootは、すべての必要なCPRIMコ−ルを含まなければなりません。つまり新しい述語の数と同じだけCPRIMとCPREDが呼び出されなければなりません。いくつかのファイルにC述語がある場合には、それぞれのファイルにCbootX()の形で、たとえばCboot1(),Cboot2(),のように区別をつけるのが良いでしょう。そしてそのファイルには、すべてのCPRED()とCPRIM()のコ−ルが含まれています。それぞれのCbootX()の呼び出しを含んだひとつのファイルが実際にCboot()を呼び出します。

CPRIMは、Cで書かれた簡単な述語をPrologの名前にリンクします。第1引数は、Prologで述語の名前になるCの文字列であり、第2引数はアリティであり、第3引数はC関数へのポインタです。CPRIM関数の呼び出しは、バックトラックしない述語と共に使われます。

注意: CPRIMやCPREDは、cpred.hにおいてマクロ定義されています。

CPREDは、Cで書かれたバックトラックする述語をPrologの名前にリンクします。これは、バックトラツクする述語に対してCPRIMの代わりに使われます。第1引数は、Prologで述語の名前になるCの文字列であり、第2引数はアリティであり、第3引数はC関数へのポインタであり、第4引数は、バックトラックに使用するロ−カルなデ−タ構造の大きさです。CPREDの用法については、”バックトラックするProlog述語をC言語で書く”の章で説明されています。

document: http://www.ifcomputer.co.jp/IFProlog/Manuals/v4.1/advanced_feature/c_interface/libfunc/summ/conn/print_en.html
published 2008/7/21 update 1994/7/28 (c) 1996-2006 IF Computer Japan
IF Computer 5-28-2 Sendagi, Bunkyo-ku Tel +81-3-5814-3352 info@ifcomputer.com
Customer Support Tokyo 113-0022 Japan   http://www.ifcomputer.com
Back> managed with ubiCMS