Prologバインディングには、以下のような規約が採用されています。
・Prolog言語バインディングとX11 toolkitでは、すべて同一の名前を使うことができます。例外として、大文字で始まるアトムは小文字に変換して使います(Prologでは、大文字で始まるアトムを変数として扱うので)。
・X11 toolkitでは多くの場合、マクロを整数の同義語として使います。Prologでは代わりに、同一の文字列値をもつアトムを使います。数えあげ型も同様に扱います。
・Prolog中のコ−ルバックは、C言語バインディング中のコ−ルバックと同様の働きをします。これは、C言語バインディングの3つのパラメ−タに厳密に一致するパラメ−タを持っています。
・Prologのwidgetやクラスは、ポインタではなく名前(アトム)によって表現されます。新しくつくられたすべてのwidgetは、特別なProlog名を持ちます。Prologからwidgetへの参照には、必ずこれらのProlog名を使わなければなりません。
・toolkit中で配列が使われている場合には、Prologではその代わりにPrologのリストを使います。
・IF/Prolog X11インタフェ−スでは、Xlibのプリミティブな描画関数を簡単に使用するために、特別なドロ−widgetを実現しています。このwidgetは、自動的にすべての描画操作をセ−ブし、再描画イベントが起きた時にそれを再生し、描画し直します。
・Cに比べPrologでは、柔軟なデ−タ構造を引数として扱うことが簡単です。このため引数のリストをXtからPrologのリストに変換することにより、プログラミングがかなり容易になります。さらにパラメ−タのチェックは、このインタフェ−スを通して行われます。つまり、パラメ−タに誤りがある場合には、IF/Prologの例外処理が起こります。
・C言語バインディング中のリソ−ス名は、文字列値をもつマクロ名を使用します。Prologでは、これらの文字列値を直接使用できます。
・通常は、Cのパラメ−タとほぼ同一のパラメ−タをPrologで使用できます。各リストの長さを計算するだけのカウンタは除外され、システムが自動的に計算します。通常関数の返り値は、対応する述語の第1パラメ−タに単一化されます。
・toolkitの実行中にIF/Prologをアボ−トしたい場合には、quitシグナルを使わなければなりません。これは直ちにアプリケ−ションを中断し、IF/Prologを終了させます。
・このソフトウェアの実現やこのマニュアルの作成において、以下の文献を使用しました。Prolog X11.4言語バインディングを使うユ−ザは、X toolkitを有効に使うために、これらの文献あるいはX toolkitによるプログラミングについて一読されるといいでしょう。
X Toolkit Intrinsics - C Language Interface X Window System X Version 11, Release 4 Joel McCormack, Paul Asente, Ralph R. Swick
X Toolkit Athena Widgets - C Language Interface X Window System X Version 11, Release 4 Chris Dj. Peterson
・以下の2つのマニュアルによって、Xウインドシステムに関する有用な基礎知識を得ることができます。このマニュアルで解説しているインタフェ−スを使って"実際的な"アプリケ−ションを開発するためには、このマニュアルを読んだり、あるいは他の文献からXウインドシステムの基礎概念や可能性についての情報を得ることが必要でしょう。
Xlib - C Language Interface MIT X Consortium Standard X Version 11, Release 4 Jim Gettys, Ron Newman, Robert Scheifler
Inter-Client Communication Conventions Manual
<制限>
・複数のディスプレイを使用するアプリケ−ションは実現できません ・destroyCallbackリストからのコ−ルバックは、widgetが破壊された後に呼び出されます。
・異なるグロ−バルアクションの最大数は10です。
<拡張>
・アプリケ−ションのMainLoopを脱け出ることができます。MainLoopを脱け出るには、コ−ルバック中でxtBreakMainLoop/0を呼び出さなければなりません。現在のイベントに対する未解決のコ−ルバックがすべてよびだされると、MainLoopは成功します。
<注意>
・x11 ToolkitインタフェースとAthenaインタフェースを含んだ実行可能なIF/Prologは、起動時に以下のように表示します。
IF/Prolog with X11.4 interface and Athena widget set
| scroll to top |
|