xtAddInput(+InputName, +Stream, ...
移動
次へ 前へ
上へ 最上
参考
xtAddInput/5, xtRemoveInput/1
xtAddTimeOut/4, xtRemoveTimeOut/1
xtAddWorkProc/3, xtRemoveWorkProc/1
イフコンピュータ > IF/Prolog > マニュアル > IF/Prolog V4.1 マニュアル > IF/Prolog Interfaces > OSF/Motifインタフェースマニュアル > OSF/Motifによるプログラミング > イベントソ−スの追加とバックグラウンド動作 > xtAddInput/5, xtRemoveInput/1

xtAddInput/5, xtRemoveInput/1

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.

xtAddInput(+InputName, +Stream, +InputCondition, +InputPredicate, +ClientData) xtRemoveInput(InputName)

IntrinsicsのXtAdd/RemoveInput()と同様の働きをします。

xtAddInput/5は、InputConditionによって指定されたイベントが、Stream上に生じた時に呼び出されるべきInputPredicate/2を登録します。

FileDescriptorは、stdin, stdout, stderr,或は他のストリーム等(例えば、パイプ)うちのいずれかでなければなりません。

InputConditionは、xtInputReadMAsk, xtInputWriteMask, xtInputExceptMaskのうちのいずれかでなければなりません。

InputPredicateは、2つの引数をもつ述語でなければなりません。これは、適切なイベントがディスパッチされた時に呼び出されます: InputPredicate(InputName, ClientData).

xtInputReadMaskに設定した条件で入力イベントがコ−ルバック述語を呼び出した時には、コ−ルバック述語はそのイベントの原因を取り除くために、必ずファイル記述子から読み込まなければなりません。そうでなければ、結果が無限ル−プになります。get/1を使用した場合には、別の問題が生じます。オペレ−ティングシステムによるバッファリングのために、ファイル記述子からの入力は読み込まれますが、アプリケ−ションがその行の残りを読み込むためにコ−ルバックは再び呼び出されません。よって、get_until/3を使って1行ずつ読み込まなければなりません。

InputPredicateは失敗してはならず、失敗した場合には例外"input_predicate_failed"が結果として起こります。

[user]. | write_input(InputName, ClientData) :- write('input callback '), write(InputName), write(' with client_data '), write(ClientData), write(' reads '), get_until(10, Last, Line), write(Line), nl, (( Line = last, write(removed), nl, xtRemoveInput(InputName), !) ; true). |EOF yes ?- xtAddInput(input1, stdin, xtInputReadMask, write_input, xxx ). yes

?- xtMainloop. test1 input callback input1 with client_data xxx reads test1 test2 input callback input1 with client_data xxx reads test2 last input callback input1 with client_data xxx reads last removed

yes ?- _

<xtAddInput/5> atom_expected InputCondition、Streamがアトムでない input_name_already_used InputNameで指定した入力がすでに存在している illegal_input_predicate InputPredicate/2が存在していない

<xtRemoveInput/1> illegal_input この名前の入力は登録されていない

続く..
IF/Prolog by Siemens
言語
English
Japanese
German
サーバー
USA
Japan
サイトマップ
索引
目次
全体目次
全体索引
印刷向き
imode
PDA
探索
document: http://www.ifcomputer.co.jp/IFProlog/Manuals/v4.1/advanced_feature/osf_motif/motifprog/addevent/xtadinpt/home_jp.html
published 2008/12/1 update 1995/11/7 (c) 1996-2006 IF Computer Japan
IF Computer 〒113-0022 Tel 03-5814-3352 start (AT) ifcomputer.com
Customer Support 東京都文京区千駄木5-28-2   http://www.ifcomputer.co.jp
冒頭へ managed with ubiCMS