widgetクラスによって提供される外部関数は、IF/Prologから呼び出しが行えるようにすべきです。これらの関数を呼び出す述語をIF/Prologに追加するには、標準のCインタフェ−スを使います。...
Move to
=> <=
Darueber Spitze
Zoom to
widget名の変換
C述語に対するクラス引数
引数リストの変換
See also
目的
概要:新しいwidgetの追加方法
ファイル
外部関数の述語としての実現
コンパイルとリンク
インスト−ル
IF Computer > IF/Prolog > Manuals > IF/Prolog V4.1 マニュアル > IF/Prolog Interfaces > Athena インタフェースマニュアル > X11.3 IF/Prologの拡張 > IF/Prolog-X11.3へのWidgetsの追加 > 外部関数の述語としての実現

外部関数の述語としての実現

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/x11r4中のcbootxif.cを編集し、この呼び出しを追加して下さい。

例題:述語xawListHighlight/2を使用したXawListHighlight()の実現

外部関数の実現については、例題のあるソ−ス $PROROOT/x11/list_ext.cも参照して下さい。

static int IFXtListHighlight() { Widget list; int index;

if ( !XChk(IsWidget(IFArg(1),&list), IF_EXC_widget_exp) || !XChk(IsInt(IFArg(2)), IF_EXC_int_exp)) { return 0; } if (! XChk(XtClass(list) == listWidgetClass, "list_widget_expected")) return 0;

index = IntPC(IFArg(2));

XtListHighLight(list,index);

return 1; } . . . int CbootListExternals() { . . . CPRIM("xtListHighlight",2,IFXtListHighlight); }

read on...
widget名の変換
手続き呼び出しIsWidget()に注意して下さい。これは、Prologのwidget名からCのwidgetポインタへの変換を行います。...
C述語に対するクラス引数
あるC述語に対する引数としてwidgetクラスが必要な場合には、Prologのクラス名からtoolkitのクラスポインタへの変換が行われなければなりません。これは、以下を呼び出すことによって行われます。...
引数リストの変換
Prologの引数リストをtoolkitの引数リストに変換する場合には、IFXtSetArgs()を使って下さい。...
IF/Prolog by Siemens
Sprache
English
Japanese
German
Server
USA
Japan
Site Access
Local Index
Local Contents
Site Contents
Site Index
Printer Friendly
For imode
For PDA
Search
document: http://www.ifcomputer.co.jp/IFProlog/Manuals/v4.1/advanced_feature/athena/xext/adwidget/impextf/home_de.html
published 2008/9/1 update 1995/11/6 (c) 1996-2006 IF Computer Japan
IF Computer 5-28-2 Sendagi, Bunkyo-ku Tel +81-3-5814-3352 start (AT) ifcomputer.com
Customer Support Tokyo 113-0022 Japan   http://www.ifcomputer.com
scroll to top managed with ubiCMS