Resources for Ada


Claw for Windows NT/95
Thin OS/2 API

X11Ada (X11R5 + Motif 1.2)
XV (partial XView)

CGI (WWW services)
TASH (Tcl from Ada)

Tools and components

Claw: a thick Ada 95 binding for Microsoft Windows NT/95
Claw is RR Software's object-oriented front-end environment that provides a framework and resources for Ada 95 programmers to create applications for Windows NT/95. The GUI builder allows the creation of GUIs by drawing, with code automatically generated using an object-oriented Ada 95 binding to the Win32 GUI. The generated code can be compiled with any validated Ada 95 compiler.

Win32Ada: a thin Ada 95 binding to the Microsoft Windows 32-bit API
Win32Ada is an Ada 95 binding for Windows. Release 2.0 works with the Microsoft Win32 Application Programming Interface available on Windows NT and Windows 95. Win32Ada was produced by Intermetrics and Labtek.

Thin Ada 95 Binding to the OS/2 API
The OS2 package provides thin, direct Ada 95 bindings to the most important sections of OS/2's GUI API, i.e. Win, GPI, Dev, Spl, DDF, Prf, Drg.

X11Ada: Direct Binding to X11R5 / Motif 1.2
X11Ada is an Ada 95 binding to the Xlib, Xt, and Motif 1.2 programming API's of X11R5. X11Ada has been developed under contract by Intermetrics, to promote the use of Ada 95. The specific Ada 95 features it uses heavily are general access types and child packages, but there are no tagged types.

The mapping is direct in the sense that there is mostly a 1-1 mapping between:

C header file
Ada package
C type
Ada type
C function
Ada function or procedure
C variable or constant
Ada variable or constant

Ada->Motif/X Binding
Made by Hans-Frieder Vogt --

This is a binding of Ada to the C-Libraries of the X Window system and the Motif(tm) widget set. Nearly all of the Motif(tm) routines are included, with a steadily growing number of Intrinsics and basic Xlib functions. For a future version 1.0, it is planned to incorporate most of the calls to the Intrinsics and Xlib. This will take its time, of course.

This is a "medium" binding: On the one hand the names of the routines were nearly left untouched (just some "_"s added), on the other hand it was tried to only use Ada types in the specification part of the packages (i.e. no Ada.Interface.* type) wherever possible.

The binding was completely hand-written, therefore needed a huge amount of the authors spare time (his main task is not computing, but analysing fluid flows in turbines), but it seems now complete and stable enough to be widely used and experimented with.

The binding was tested using the GNAT-3.09-Compiler to run the examples on:

Earlier versions of GNAT might or might not work. The binding should be usable with every Ada 95 compiler, but the Makefiles are for GNAT! Motif Versions 1.2* and 2.0 and X11 releases 5 and 6 are supported.

XV Ada Library 0.4
(c) 1996 Andreas Almroth -- All Rights Reserved. The library is copyrighted under GNU Library General Public License (LGPL).

XV Ada Library is an object-oriented library that implements parts of the XView library for C. Implemented objects are; Frame, Frame_Cmd, Panel, Panel_Button, Panel_Text, Panel_Numeric, Panel_Choice, Panel_Toggle, Panel_List, Panel_Checkbox, Panel_Message, Panel_Slider, Panel_Gauge, Menu, Menu_Item, Font, Icon, Server_Image and Panel_Notice, Text_Subwindow, Tty_Subwindow.

The library is what many call a thick binding to the C version of the XView library. In the archive there are five demonstration programs to show what the library can do. Included in the archive is also the 130+ pages manual in Postscript format.

The library is written using Gnat 3.01 and Solaris 2.4 for x86. The library also compiles under SPARC with Solaris 2.4 using Gnat 3.01. It should also compile under Linux 1.3.x with Gnat 3.01.

TASH: binding to Tcl from Ada
TASH is the implementation of a binding to Tcl from Ada. The goal of this binding is to make scripting language features, such as associative arrays, regular expression matching, and execution of OS commands available to an Ada programmer and to allow a Tcl programmer to use Ada in place of C where needed (eventually, access to the X window system via Tk will also be available). This binding exploits several new features of Ada 95 that make interfacing to C much cleaner and more direct than Ada 83.

Adatcl: access to Tcl
An Arcadia Project consortium member, the University of Colorado, Boulder, has produced Adatcl, which allows to run Tcl programs and to write Ada code defining new Tcl procedures.

Ada / Motif Binding (IEEE P1295.1)
The IEEE Computer Society Portable Applications Standards Committee (PASC) (the same folks who brought you the P1003.5 POSIX/Ada binding) has authorized the formation of a group to standardize an Ada binding to Motif (IEEE Standard P1295.1, Modular Toolkit Environment, to be specific). This group will be assigned to PASC Working Group P1003.5, the POSIX Ada Bindings group. Depending on the state of the work, standardization should take 2 to 4 years.

For a copy of the current draft of IEEE Std 1295, contact the IEEE at (800) 678-IEEE, and ask for Order Number DS03277. (The cost is $61 + shipping for an IEEE member, and somewhat more for non-members.) For technical information, contact David Emery ( at (617) 271-2815.

X11R5 / GNU AdaXLibXt bindings (mirror)
GNU AdaXlibXt is based on a commercial set of AdaMotif bindings to the X Window system, from Systems Engineering Research Corportion (SERC).

The GNU distribution contains the Xlib, Xau, Xdmcp, Xext, Xt, Xaw, and Xmu portions of the SERC AdaMotif product. Full Ada source code is provided to these libraries. Example Ada programs for each library are also provided.

The bindings to the Motif libraries are not included in this distribution. The Motif layer bindings of AdaMotif can be acquired from SERC.

X11R6 / Fresco: An Advanced Graphics Library

What is Fresco?

Fresco is an object-oriented application programming interface (API) for graphical user interfaces that covers functionality in Xlib and Xt and adds support for structured graphics and application embedding. Fresco has three fundamental features that distinguish it from Xt and most other APIs for graphical user interfaces:

Graphical embedding includes both presentation, which involves the spatial composition of user interface objects, and editing, which involves logical composition of objects.

Fresco supports full multi-threading. This means that Fresco functions properly in the presence of concurrent tasks sharing memory within an application, where more than one task is performing user interface operations at the same time. In addition, the event loop, screen redraw, and application operations can run in three separate threads by default.

C++ developers (and now Ada 95 developers) are getting this new graphics toolkit called Fresco. Fresco is being developed by SGI and Fujitsu for the X Consortium. A C++ sample implementation is available in the X11R6 distribution. However, Fresco is not limited to the X Windowing system. Fresco versions are planned for Windows NT and Chicago.

What is OIS's Fresco product?

Objective Interface Systems, Reston, VA, is developing the Ada 95 version of Fresco (contact: They are mirroring the C++ implementation in Ada 95 so that the Ada community can develop their own widgets and tools for GUIs.

The CORBA interface (see below) will allow Ada 95 Fresco applications to interoperate transparently with Fresco/C++ applications. Developers with both OIS's Fresco and CORBA products can build graphical widgets and systems in Ada 95 that are usable from non-Ada language code.

Ada 95 now has a highly advanced, truly portable graphics toolkit. This graphics toolkit is based on the next generation X standard, not a proprietary technology.

Windows NT and Windows 4.0 versions are planned in addition to the VMS and Unix X Windows versions.

How to get more information about Fresco

In X11R6; the X11R6 Release Notes have a section on Fresco.

SGI has a variety of papers and presentations on Fresco.

Package CGI: an Ada 95 binding to the "Common Gateway Interface" (CGI)
This package makes it easier to create Ada programs that can be invoked by World-Wide-Web (WWW) HTTP servers using the standard CGI interface. Using it, you can create Ada programs that perform queries or other processing by request from a WWW user, and then reply with a generated-on-the-fly document.

Ada CGI package

Another Ada CGI package.

CIFO: the Catalogue of Interface Features and Options for Ada Runtime Environments
The Ada language intentionally (necessarily) leaves the details of many important capabilities of the Runtime System to the individual implementation, such as scheduling regimen, interrupt control, storage management, and so on. In many applications, such capabilities and services are essential to the successful realization of the project, and would have to be provided. Since the user's interface to these capabilities is often not specified in great detail, implementations will differ as they emerge. An objective of CIFO is to propose and describe a common set of user-runtime environment interfaces from a user's perspective.

CIFO has been produced by the Ada Runtime Environment Working Group/SIGAda. It will be upgraded to take new Ada 95 mechanisms into account.

CORBA: The OMG's Common Object Request Broker Architecture

What is CORBA?

Programming languages typically provide a mechanism for specifying interfaces, but not in a manner that is appropriate for remote access to procedures or data. Distributed systems often provide a language for specifying how procedures can be called remotely, but without support for object references or polymorphism. The Object Management Group (OMG) has developed the Interface Definition Language (IDL) as a standard way to specify objects that may be accessed remotely. IDL is part of OMG's Common Object Request Broker Architecture (CORBA) that defines the mechanisms for transparent access to objects in a network.

Using IDL has several advantages over the alternatives:

Thus, IDL provides the interface definitions for transparent, interlingual communication. In addition to the obvious benefits of facilitating application distribution, using IDL for interface definition frees each system implementor to use the language of their choice by removing the concerns for interfacing with other languages.

Each part of the application communicates through an Object Request Broker (ORB). There are many vendors marketing ORB products. Currently, an application built (in C or C++) with one product is not easily ported to another vendor's product.

Ada Bindings with CORBA

ABWG-OMG, a subgroup of the ACM SIGAda Bindings Working Group, is currently working on issues related to Ada bindings with CORBA.

What is OIS's CORBA product?

Objective Interface Systems, Reston, VA, has developed an IDL to Ada 95 translator that currently generates Ada 95 source code in the form defined by the OIS/MITRE IDL-to-Ada 95 mapping document. This includes:

Thus, you design the interface with IDL, run the translator to generate the framework, and then fill in the templated implementation body programs.

The OIS Ada 95 packages include automatic memory management facilities. This alleviates the need to assign responsibility for destroying each object to a particular segment of your program. Performance is improved by removing the need to constantly create copies of data.

The current version of the translator product allows you to build standalone Ada 95 applications in the CORBA style. This means that you can write code that uses the interface as a client and also write code that implements the server.

The resulting code is good, object-oriented Ada 95 code and presents an elegant style of coding even for standalone systems. In addition, low overhead, local calls are used to communicate with the server code. The resulting application is as fast as any standalone system developed without CORBA in mind.

Applications built with the current translator will not require changes to use the subsequent add-on modules that will support a particular ORB vendor's product. Certain generated, hidden child packages are regenerated from the IDL that will connect to the ORB vendor's communication subsystem.

POSIX / Ada 1003.5 System Services Interface for AIX (mirror)
This package provides tools to interface between Ada and an operating system. The package is modeled on the POSIX interface for AIX but may be implemented on other environments as well. Functions available include interfaces to files and directories; access to environment variables such as user login name and aliases or logicals; and interfaces to spawn or execute other processes.

POSIX / Ada 1003.5b
Implementation of the proposed Ada binding to the P1003.4 and P1003.4a POSIX Realtime Extensions (previously 1003.20). Although not a full set of POSIX Ada bindings, the POSIX/Ada-Runtime project at Florida State University has built a Pthreads library for SunOS and an associated set of "thin" Ada bindings.

The sources of the POSIX Ada Run-Time System Librarys (PART) are available to the public for non-commercial use (see copyright).

Related publications --e.g. draft 2.4 of the POSIX/Ada 1003.5b specification (compressed Postscript file, 500K)-- as well as an implementation of POSIX threads are also available on this site.

Paradise (mirror)
Paradise is a set of Ada packages intended to provide an interface to the Unix operating system, and more specifically to the communication routines, that are accessed via file descriptors. It lets the Ada programmer use files, pipes, and sockets, as well as signals, error codes, environment variables, etc., using an interface that looks as much as possible like the C interface. Paradise supports multi-tasking: any input or output is blocking for the calling task only, and not for the entire process.

Paradise is intended to be system- and compiler-independent; so far, it works on three environments:

It is known not to work well on SunOS/Alsys, because of problems on signal handlers. For those who would like to port Paradise to other environments, portability information is displayed in the source code.

To install Paradise, you need:

NOTE: there are no Ada sources in the distribution; the source code must be first processed by m4 to become Ada code.

Ada / Xt Toolkit (mirror)
This is the Unisys Ada implementation of the Xt toolkit (Ada/Xt), version 3.2. Included in this package are Unisys revisions to Version 1.0 of the STARS Ada/Xlib Bindings produced by Unisys, Boeing, and SAIC, an Ada implementation of the Xt intrinsics that is compatible with the joint STARS Xt interface specification, and an Ada implementation of a sample widget set. The Xlib bindings are compatible with X11R3 and X11R4. A technical report describes the architecture of the Ada/Xt Toolkit (mirror), and Paramax has also produced a style guide that defines conventions for the development of effective user interfaces (mirror).

Ada / Motif 1.0.1 Binding (mirror)
The BCA Motif Ada bindings are a binding to the Motif widget set, and a subset of the Motif functions.

You must have the Motif object code libraries to use this software. The bindings were developed using Motif version 1.0.1 and have not been tested under 1.1.

This software was developed by Boeing Commercial Airplanes and is being distributed to the public through the STARS project.

SAMeDL, Ada-SQL Binding
SAMeDL is SQL Ada Module Description Language, an Ada-SQL Binding Language currently undergoing ISO standardization (it holds Draft International Standard status right now). It was developed with input from both the Ada and SQL communities, government, and industry. SAMeDL provides a flexible and portable way to interface Ada applications with SQL. SAMeDL integrates Ada and SQL in a unique way, supporting features such as user-defined types, robust error handling, safe null-value handling, and record-oriented i/o. SAMeDL is growing in popularity because it offers support for Ada features that are not supported in other SQL bindings.

SAMeDL was developed by the SQL Ada Module Extensions Design Committee, led by Dr. Marc Graham of the Software Engineering Institute (SEI) at Carnegie Mellon University. SAMeDL is currently undergoing International Standards Organization (ISO) standardization. Because SAMeDL is defined in terms of existing industry standards, it promotes functional compliance with the entry-level Ada SQL module language interface defined in SQL2: ISO/IEC 9075:1992, Database Language SQL; and the Ada standard, ISO 8652:1987.

Two companies have developed SAMeDL tools: Competence Center Informatik GmbH and Intermetrics Inc.

Competence Center Informatik GmbH sells a SAMeDL compiler for the platforms IBM/RS6000/AIX, Sun SPARC/SunOS 4 and Sun SPARC/SunOS 5 for Oracle rdbms. Point of Contact:

Competence Center Informatik GmbH
Attn.: Andreas Koeller
Lohberg 10
49716 Meppen

voice: +49 5931-805-464
fax:   +49 5931-805-100

Intermetrics has developed SAMeDL tools for a variety of platforms. For more information on Intermetrics' SAMeDL, please contact:

Jennifer Carle
Intermetrics, Inc.
7918 Jones Branch Dr., Ste. 710
McLean, VA 22102

voice: +1 703-827-2606
fax:   +1 703-827-5560

PCTE: a Portable Common Tool Environment (mirror)
PCTE is a European standard, with language bindings for Ada (ECMA-162) and C. This Paramax Ada binding was made for the Emeraude PCTE implementation.

Notes: For do-it-yourself bindings, there are tools that automatically either convert C code into Ada or bind C code from Ada. For details, see the non-commercial tools section (cf. C2ada and cbind). There is an Ada Bindings Working Group (ABWG) which is part of SIGAda. ABWG is interested in pursuing Ada bindings to "standards." Their mission is: "To identify and disseminate issues and recommendations for the creation of Ada bindings to software systems." The ARA (Ada Resource Association) announced in May 1996 that it will actively pursue the creation of common bindings used by all compiler vendors; this will promote portability without having to wait for officially standardized and blessed Ada bindings.

There are some lists of available Ada bindings (mirror). This is the result of a collaborative effort between the Ada Information Clearinghouse (AdaIC), the Asset Source for Software Engineering Technology (ASSET), and the Association for Computing Machinery's Special Interest Group on Ada (ACM SIGAda).

ASSET, one of many government-subsidized activities trying to be software repositories, exports a catalog of its collection of assets in the domain of Ada Standards and Bindings.

Page last modified: 1998-02-10