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.
widgetクラスによって提供される外部関数は、IF/Prologから呼び出しが行えるようにすべきです。これらの関数を呼び出す述語をIF/Prologに追加するには、標準のCインタフェ−スを使います。
XとIF/Prologの間の"Arg"名の衝突を避けるためには、ファイルcpred.hの代わりにファイルxcpred.hをインクル−ドし、C述語に対するパラメ−タを取得するために、Arg()の代わりにIFArg()を使って下さい。
新しい述語は、Cboot()と同様の手続き、たとえばCbootNewExternals()中でPrologに登録しなければなりません。この手続きは、主手続きCbootXif()から呼び出されなければなりません。$PROROOT/motif中のcbootxif.cを編集し、この呼び出しを追加して下さい。
例題:述語xmListDeselectPos/2を使用したXmListDeselectPos()の実現
static int IFXmListDeselectPos()
Widget list;
unsigned int position;
if ( !XChk(IsWidget(IFArg(1),&list),
IF_EXC_widget_exp)
!XChk(IsUInt(IFArg(2), &position),
IF_EXC_pos_int_exp))
return 0;
if (! XChk(XtIsSubclass(list), xmListWidgetClass),
IF_EXC_list_exp))
return 0;
XmListDeselectPos(list, (int) position);
return 1;
.
.
.
int CbootListExternals()
.
.
.
CPRIM("xmListDeselectPos",2,IFXmListDeselectPos);
外部関数の実現については、例題のあるソ−ス $PROROOT/motif11/mtextext.cも参照して下さい。
|