Этот пакет содержит связку Ada95 с X11 и Motif или Lesstif
автором которого является Hans-Frieder Vogt:
"Эта связка Ады с библиотеками C системы X Window и набором виджетов
Motif(tm) или Lesstif. Пока я пытаюсь включить все подпрограммы Motif(tm)
не все подпрограммы Xlib/Intrinsics включены в эту связку.
Я надеюсь подключить полный комплект средств Motif/Intrinsics/Xlib
к версии 1.0 (достижение этого потребует много времени).
Поддержка набора виджетов Athena - НЕ ПЛАНИРУЕТСЯ.
Программисты, которые задействованы в написании программ для X Window,
могут легко использовать эту связку. Большинство имен функций и процедур
соответствуют эквивалентным именам интерфейса C, например:
XGetRGBColormaps (C interface) <-> X_Get_RGB_Colormaps (Ada binding).
Сохраняя сходство с интерфейсом C, я пытаюсь использовать средства безопасности
Ады для контроля за созданием и удалением указателей везде где это возможно.
Эта связка полностью написано вручную, что требует много времени
(более 4 лет, поскольку моя основная работа связана не с программированием,
а с анализом потоков жидкостей в турбинах), однако, на мой взгляд в настоящее
время эта связка является достаточно полной и стабильной для широкого
использования и экспериментирования (во всяком случае, я надеюсь).
Эта связка была оттестирована на системах:
- Linux on i86 (Linux 2.*, where it was mainly developed)
- Solaris 2.4 / Sun OS 5.4
- IRIX 5.2/5.3/6.2
используя компилятор GNAT (в настоящий момент я использую GNAT 3.12p,
следует заметить, что я не тестировал каждый релиз на всех перечисленных
операционных системах).
Я надеюсь, что я не использовал какие-либо функции, которые специфичны
для реализации GNAT, таким образом, эта связка должна работать
с любым компилятором Ada95. Тем не менее, следует учитывать, что файлы
управления сборкой проекта (Makefile) написаны с учетом использования
компилятора GNAT!
Поддерживается Motif версий 1.2* и 2.*, а также X11 релизы 5, 6 и 6.3.
Пожалуйста, прочитайте файл INSTALL, для выбора релизов Motif и X
при адаптации связки с вашим операционным окружением.
Пожалуйста, присылайте мне не только сообщения об ошибках,
но и комментарии о моем подходе к решению проблемы.
ВАЖНО: Не каждый производитель предусматривает библиотеки X, которые
безопасны для нитей/потоков (thread-safe). Это не должно вызывать проблемы
если ваше приложение не является многопоточным/многонитиевым, т.е.
использует задачи (примечательно, что даже когда Ада-таймер обладает
собственной задачей в GNAT, используя delay ..., результирующая программа
будет многопоточной!). Если вы не имеете библиотек X, которые
безопасны для нитей/потоков (thread-safe), но желаете написать
многопоточную программу, то вы должны ограничить доступ к X пределами
одной задачи. Убедитесь в том, что только одна задача использует
доступ к подпрограммам X Window для блокировки и освобождения задач
включенных в пакет именуемый X_Lib.Tasking, который я позаимствовал
из связки "Intermetrics Ada-Binding" (именуемый здесь как X.Tasking).
Прочитайте замечания copyright-notice и замечания по использованию
этого пакета.
Использование пакета Tasking демонстрируется в примерах программ "clock"
и "show_screen_saver".
Если ваш релиз X Window поддерживает нити в X11R6,
то будет необходима инициализация многопоточного кода
(procedures X_Toolkit.Xt_Toolkit_Thread_Initialize и X_Lib.X_Init_Threads,
см. пример "mandel").
Теперь я хочу поблагодарить Dr. Peter Hermann из "Institute for Computer
Applications of the University of Stuttgart", который "заразил" меня
Ада-вирусом, и много раз подбадривал меня в работе над этой связкой.
Кроме того, я хочу поблагодарить Samuel Tardieu (sam@inf.enst.fr),
который много раз подсказывал мне как сделать реализацию этой связки
совместимой с последующими реализациями GNAT."