This package provides the basic facilities for combining the programming languages Eiffel and tcl into a hybrid program architecture. The basic concept of this package is the idea of writing the body of a program in Eiffel (which is safe, elegant and maintainable), export the essential routines and data to tcl in order to finally create the appli- cations interface with xf which is fast development and grants a high degree of adaptability. It is even imaginable to have the final users of your product re-design parts of or even the whole human computer interface to their taste including the possibility to write and bind macros, that on a s ingle mouse click execute (complex) standard sequences of their work. What you need is: ISE Eiffel 3 (only base library required - I tried with 3.1.1) tcl 7.3 or later tk 3.6 or later The approach is as follows (caution: technical details below): eif_tcl.c contains the functions to interface from Eiffel to the tcl library (which is a C-library). eif_tcl.c is encapsulated by the Eiffel classes TCL_INTERPRETER, TK_INTERPRETER and TCL_COMMAND. TCL_INTERPRETER encapsulates the interpreter itself. TK_INTERPRETER (a specialization of TCL_INTERPRETER) adds tk capability TCL_COMMAND defines a protocoll for Eiffel routines that can be installed into a tcl interpreter under a name that will then serve as a new tcl command callable from within this interpreter. A mechanism for passing arguments from tcl to Eiffel is provided, too. TCL_OBJ is a small example for an application class which uses a tcl-tk interpreter for its visualization. It has two variables which are mapped to tcl variables. The routines `to_tcl' and `from_tcl' manage the data transfer. Additionaly TCL_OBJ creates some TCL_COMMANDS as instances of different specializations like CREATE_CMD etc. These commands are associated to the TCL_OBJ object and installed into the interpreter. Finally a tcl script is executed "tcltest.tcl". In tcltest.tcl (which is purely generated by means of xf) finally a window is defined containing: - 2 text entries that are associated to the tcl variables "var1" and "var2". TCL_OBJ uses these variables for data transfer. - a menue and four command buttons associated to the commands "new_win", "defaults", "print", "donnot", "close_win", "my_eval" These commands evaluate as callbacks to Eiffel. (Notice the button "eval $var1": when you press this button the contents of the first text entry is interpreted as a tcl command. E.g. try typing: puts "Hello $var2" push the button and watch the output in your Xterm. Or you might try "destroy ." which is a tk command or try one of the commands "new_win", "defaults" etc.. Special interest to "print" with any number of arguments - watch your Xterm). Hope you enjoy it Stephan (stephan@cs.tu-berlin.de)