Ada->Motif/X Binding Version 0.7.2 This is a binding of Ada to the C-Libraries of the X Window system and the Motif(tm) or Lesstif widget set. While I tried to include all Motif(tm) routines, not all Xlib and Intrinsics routines are in the binding yet. I hope to include the complete Motif/Intrinsics/Xlib stuff until version 1.0 (which will be a long way to reach), support of the Athena widgets is NOT PLANNED. Programmers used to write X Window programs will easily use this binding. Most of the names for functions and procedures resemble the equivalent C interface names, e.g. XGetRGBColormaps (C interface) <-> X_Get_RGB_Colormaps (Ada binding). While retaining familiarity to the C interface, I tried to include the security of Ada by controlling the creation and release of pointer types wherever possible. The binding was completely hand-written, therefore needed a huge amount of my spare time (more than 4 years, because my main task is not programming, but analysing fluid flows in turbines), but seems to me now complete and stable enough to be widely used and experimented with (at least I hope so). The binding was tested to run on (the examples run there): o Linux on i86 (Linux 2.*, where it was mainly developed) o Solaris 2.4 / Sun OS 5.4 o IRIX 5.2/5.3/6.2 using the GNAT-Compiler (at the moment I use GNAT 3.13p, note that I didn't test every release with every operating system mentioned). I hope I didn't use any GNAT-specific functions, so that the binding should be usable with every Ada95 compiler. The Makefiles are for GNAT, though! Motif Versions 1.2* and 2.* and X11 releases 5, 6 and 6.3 are supported. Please read INSTALL for choosing Motif and X releases to adapt the binding to your computing environment. Please send me not only bug reports, but also comments on my approach to the problem. Important: Not every manufacturer provides thread-safe X libraries. This should be NO PROBLEM, if you don't have a threaded program, i.e. use tasks (note that even the Ada timer is an own task with gnat, using delay ... makes the program multithreaded!). If you don't have thread-safe X libraries, but want to program a multithreaded program, you should reduce the access to X to one task. To ensure that only one single task is used for X Window routines to block or release tasks are included in a package named X_lib.Tasking which I took from the Intermetrics Ada-Binding (named there X.Tasking). See the copyright-notice and notes for usage in this package. The use of the Tasking-package is shown e.g. in the example programs "clock" and "show_screen_saver". If your X Window release supports threads in X11R6, initialization of the multithread code will be necessary (procedures X_Toolkit.Xt_Toolkit_Thread_Initialize and X_Lib.X_Init_Threads, see example "mandel"). At this place I like to thank Dr. Peter Hermann from the Institute for Computer Applications of the University of Stuttgart (peter.hermann@csv.ica.uni-stuttgart.de) who infected me with the Ada-virus and many times had to encourage me to proceed with this binding. Also many thanks to Samuel Tardieu (sam@inf.enst.fr), who gave me hints how to make the implementation compatible with future releases of GNAT and to Joerg Schaefer and Vadim Godunko, who provided me with bug fixes and extensions to the package. Beginning from release 0.7.1, adabindx is distributed under a modified GNU General Public Licence similar to that of GNAT, that enables everyone to incorporate the binding even in commercial or classified executables (see the copyright notice in every file). I hope, that with this step it will be easier for everyone to use the binding. Hans-Frieder Vogt e-mail: hfvogt@nexgo.de