Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

libreadline и свой event loop

0 views
Skip to first unread message

Kirill Frolov

unread,
Jan 23, 2007, 2:22:35 PM1/23/07
to

Суть примерно такова. Есть собственная программа, со своим циклом
обработки событий, в которую включен tcl интерпретатор. И вызывается
Tcl_DoOneEvent(TCL_DONT_WAIT) из этого цикла. Ну там дальше программа
сама по себе, а tcl сам по себе, из его консоли можно всякие функции
дёргать. Но для того чтоб из консоли куда удобнее libreadline. Ну и что,
что гнутая, зато удобная... Но если просто package require, то следующим
шагом будет ::tclreadline::Loop -- и всё, ничего не работает уже (цикл в
программе). Хотелось бы просто tclreadline вызывать для обработки
событий и всё. Отдать цикл -- ну никак нельзя.

Проблема в потрохах tclreadline:

while (!TclReadlineLineComplete()) {
#ifdef EXECUTING_MACRO_HACK
/**
* check first, if more characters are
* available from _rl_executing_macro,
* because Tcl_DoOneEvent() will (naturally)
* not detect this `event'.
*/
if (_rl_executing_macro)
TclReadlineReadHandler((ClientData) NULL, TCL_READABLE);
else
#endif
Tcl_DoOneEvent(TCL_ALL_EVENTS);
}

Вобщем, хотелoсь бы более интерактивного редактора "командной строки".
Кроме как ручками libreadline прикручивать может быть что по-проще?


0 new messages