イントロダクション
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.

cgenは、1つ以上の記述ファイルの指示に従い、C関数をC述語としてIF/PrologにリンクするためのCのソ−スコ−ドを自動的に生成する、IF/Prologのプログラムです(ソ−スコ−ドとして提供されています)。生成されたCコ−ドは、実行可能なファイルifprologを新たに作るためにコンパイルし、IF/Prologのオブジェクトライブラリ−とリンクしなければなりません。(Cインタフェ−スマニュアルのコンパイル/リンク・ノ−トの表を参照して下さい)

cgenのコ−ドはディレクトリ"$PROROOT"/util/cgenにあります。

必要なコマンドすべてを実行するためのmakefileを備えた例題プログラムが提供されています。IF/PrologのGKSインタフェ−スはcgenを用いて実現され、cgenのより複雑な例題となっていることに注意して下さい。

このツールの目的は、Cで書かれたソフトウェアパッケ−ジをIF/Prologにリンクするという、退屈で時間のかかる作業を簡単にすることです。グラフィクスパッケ−ジなどのように、リンクしなければならない関数が多ければ多いほど、このツールは有用なものとなります。またIF/PrologでC関数を書くのに苦労している初心者の方にも役立つはずです。

cgenを使えば、各述語ごとにリンクのためのC関数を書くかわりに、IF/Prologのプログラムとして新しい関数ごとに簡単な記述をするだけでいいのです。通常は、新しい関数に対してPrologで1行指定するだけです!

使用法: % ifprolog -c cgen -p input1 input2 ...output または % ifprolog -c cgen Input file : input1 Next input file : input2 Next input file : ... Next input file : Output file : output

cgenでは、IF/Prologにリンクされる各C関数に対して、IF/Prologによる簡単な記述を含んだ1つ以上のファイルの入力が必要です。

cgenは単一の出力ファイルを生成します。その出力ファイルは以下の内容からなるものです。

-単一のCboot()結合関数の中に書かれた、Cの関数をIF/Prologの述語名に接続するためのCコ−ド(CPRIM())

-パラメ−タの受け渡しを行い、目的のC関数を呼び出すための中間C関数

入/出力ファイルの名前は、前頁のように、コマンドラインのオプション"-p"の後に書くことで指定することができます。そうでなければ、プログラムが入力要求を出します。(入力ファイルを指定し終ったら、改行だけの行を入力して終了します。)

注意: バックトラックするC述語の生成はできません。また、引数には任意の基本デ−タ型を使用できますが、(構造体のように基本データ型から作られる)デ−タ構造は使用できません。


Darueber read on...