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.
ToolkitからPrologへの変換は、xtGetValues/2を使用する場合にのみ必要となります。この述語は、各リソ−スに対する変換手続きを呼び出す手続きとして実現されています。これらのコンバ−タは、リソ−ス名とその値が必要とされるwidgetを取得します。リソ−ス値は、コンバ−タがXtのル−チンXtGetValues()を呼び出すことによってwidgetから直接取り出されます。そして、必要とされるProlog表現への変換が行われ、その結果が返されます。
void FromToolkitToPrologConverter(name, widget, value_ptr)
char *name;
Widget widget;
TERM *value_ptr;
Prolog表現への変換では扱い易くするために、整数定数をアトムに置き換えることがあります。
例題:型"XtJustify"のリソ−スに対するコンバ−タ
void IFXtTPCvtJustify(name, widget, value_ptr)
char *name;
Widget widget;
TERM *value_ptr;
{
Arg arg[1];
XtJustify justify;
IFXtCvtError = NULL;
XtSetArg(arg[0], name, &justify );
XtGetValues(widget, arg, 1 );
switch( justify ) {
case XtJustifyLeft:
*value_ptr = StrAt("justifyLeft");
return;
case XtJustifyRight:
*value_ptr = StrAt("justifyRight");
return;
case XtJustifyCenter:
*value_ptr = StrAt("justifyCenter");
return;
default:
IFXtCvtError = "unknown_XtJustify_value";
return;
}
}
|