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.
多くのリソースでは、Prolog表現はXtoolkit中の文字列表現に対応するアトムになります。これらの場合には、Xtoolkitあるいはwidgetクラスの初期化時に登録したコンバータが存在します。そしてこのコンバータは、文字列表現をwidgetによって要求されるリソースの表現に変換します。これらのコンバータは、Prolog-to-Xtoolkitコンバータによって使用されねばなりません。XtのルーチンXtConvert()を使って登録されたコンバータを呼び出し、その後にXtArgValへのキャストを行なうことができます。IFXtConvertAtom()は、XtConvert()を呼び出し、その変換結果をグローバル変数IFXttoに代入する便利なルーチンです。
XrmValue IFXtto;
void IFXtConvertAtom(value, type)
TERM value;
String type;
{
XrmValue from;
char *string = AtStr(value);
from.size = strlen(string) + 1;
from.addr = (caddr_t) string;
/* use built-in Resource converter function: */
XtConvert(IFWidget,XtRString,&from,type,&IFXtto);
}
例題: 型"XmRBoolean"のリソースに対するコンバータ
void IFXtPTCvtBoolean(value, arg_val)
TERM value;
XtArgVal *arg_val;
{
IFXtConvertAtom(value, XmRBoolean);
if (IFXtto.addr == NULL)
IFXtCvtError = "illegal_boolean_resource";
else
*arg_val = (XtArgVal)*(Boolean *)IFXtto.addr;
}
|