文字列変換の使用
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; }


戻る 続く..