関数名 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言語で書く”の章で説明されています。
| 冒頭へ |
|