Login | Register
My pages Projects Community openCollabNet

Project home

If you were registered and logged in, you could join this project.

Summary An Ada wrapper library for the wxWidgets GUI library
Category construction
License Other OSI-certified license
Owner(s) lucretia

Important News

This project is currently stalled. The source code has been uploaded in it's *current* state for people to look over and possibly extend. During my latest work on the project, I found that the C++ objects we causing a problem due to the way that they were derived. wxValidator is derived from wxEvtHandler which in turn is derived from wxObject; the wxEvtHandler is a non-copyable object yet the others are copyable. Please see the TODO file for more information. I do have some C/C++ and Ada source files that have not been included into the repository, I will create a new directory for these samples so that if they're required they can be added to the main src/ directory at a later date.


The aim of this project is to provide a free, portable, minimal, Ada-like bindings library to the wxWidgets GUI library.

wxAda v1.0 will target the Ada95 programming language utilising any Ada95 compliant compiler (initially the FSF GNAT). Only when wxAda is stable and has enough of wxWidgets wrapped and the Ada 2005 support has stabilised will a binding to Ada 2005 will be started.

wxAda v1.0 will also target wxWidgets-2.6.x series, as this is stable, i.e. the API isn't changing.


Some people don't use a library because they cannot afford to, the wxAda library is free from these types of licencing requirements. it can be used by anyone that wants to and if they want to make some money from their creation, then they should be able to do so, so long as they don't try to pass the wxAda library off as their own creation. In other words, the wxAda library is released under the wxWidgets licence.


Binding to C++ isn't defined by the Ada standards and is implemented in an inconsistent manner on the compilers that do support it. Although it's nice to have interoperability between different languages, it just would have been very difficult to provide bindings that worked in a portable manner if these C++ binding interfaces were used.

Different C++ compilers mangle names in different ways, so building the wxWidgets libraries with one C++ compiler could cause incompatabilities between the Ada compiler.

Because of the above reasons, it has been necessary to bind from Ada to C++ using an intermediate C layer and where necessary derive wxAda-specific intermediate C++ classes. If wxWidgets was developed in C a lot of these problems could easily have been avoided, not just for wxAda, but for every other language binding to the library.

So, as wxAda uses C wrappers around C++ code it is possible to have just one set of source which can be compiled "out of the box" under different platforms, i.e. build the wxWidgets libraries for your platform, then compile the wxAda library using your Ada & C++ compilers and it will just work!


Ada is a very powerful language and provides a lot of useful types in it's standard packages (libraries), e.g. tasking is built into the language and the language's string handling is particularly powerful. Because of these features, it is not necessary to duplicate any functionality already found within the language or the standard packages. In other words, any features which exist in both wxWidgets and the Ada runtime, the Ada runtime variant will be preffered and the wxWidgets version will not be wrapped.

By cutting down the number of wxWidgets classes to implement in Ada we can in turn cut down the size of the actual built C++ libraries.


wxAda should look and feel just like the standard Ada packages.