Feel free to drop me an e-mail if you find some of this software useful or have other comments or suggestions.
In Ada controlled types, i.e. types with user defined initialize and finalize operations, must be declared at the library level - either as direct descendents of Ada.Finalization./Limited_/Controlled or via a mixin component that inherits from Ada.Finalization./Limited_/Controlled. This sometimes makes the usage of controlled types a bit of a hassel, and in particular, prevents the use of controlled types in generic packages that one would like to be able to instantiate at deeper levels than the library level.
This library, the Add Finalization Anywhere Library, aims to provide a nice(?) way to add finalization to any limited tagged type at any level. The structure of the library is inspired by Christoph Karl Walter Grein's library for adding finalization to library level limited tagged types and my library is designed to integrate well with the structure of his.
Since declaring controlled types elsewhere than at the library level isn't directly supported by Ada there are some potentially dangerous things going on inside my library. Currently, I don't know for sure if my code works on other compiler than GNAT 3.15p (on Linux and Solaris) and if it is safe.
However, as far as my understanding of the Ada RM and compilers go I do not find it unlikely that this approach could work in many cases. As far as I can see the only potential problem is the unchecked conversions back and forth between an access to tagged record type and System.Storage_Elements.Integer_Address, which need to be done in order to associate an object of a "controlled" non-library-level type with its mixin component of a "real" library-level controlled type.
This is experimental code! Try it if you dare and let my know whether it works on you platform/compiler or not. And check the known bugs below!
Add_Finalization_Anywhere.tar.gz
(Last updated: 2004-09-22)
This has been moved to my Non-Blocking Ada page. That page also contains a small collection of lock-free data structures.
This is an Ada package for communicating with a Mini SSC RC-servo controller via a serial port. The package uses a POSIX binding to access the serial port and should work on all POSIX compliant systems.
Requires Florist, a POSIX binding.
[Source available here],
[RPM available here].
Debian users can install libflorist-3.15p-1-dev or similar.
(Last updated: 2003-03-24)
This is a Ada binding for the Video4Linux API. The Video4Linux API is the interface to frame grabbers, web cams and digital cameras on Linux. The binding does not implement all of the functionality of the Video4Linux API, but it is enough to be usable. A child package provides a more convenient API for web cams that use the usb-pwc driver (e.g. Philips Vesta Pro).
Requires my Image package (see below) and Florist, a POSIX binding.
[Source available here],
[RPM available here].
Debian users can install libflorist-3.15p-1-dev or similar.
(Apart from a video device with properly installed drivers etc., of
course ;)
NOTICE: The USB-PWC driver has changed behaviour since my binding were written (and a lot of new features has been added to it). I have not tested my binding in a long time and I am sure it needs to be updated. I'll try to get that done soon (2003-03-03).
(Last updated: 2000-09-01)
This is a set of Ada packages for loading and saving images. Currently binary and ASCII ppm files in grey scale and color are supported.
Requires Florist, a POSIX binding.
[Source available here],
[RPM available here].
Debian users can install libflorist-3.15p-1-dev or similar.
(Last updated: 2000-09-01)
This is an ordered map ADT. The implementation is based on the search tree package below but has a more convinient interface. It is implemented as a random treap which makes it simple and efficient.
(Last updated: 2002-05-31)
This is a small search tree ADT. The implementation uses a random treap, which makes it both efficient and simple.
(Last updated: 2001-02-05)
NOTICE: This project is unfortunately more or less dead - I haven't
touched it for several years now.
If you should happen to be looking for a CAD program for
Linux I can recommend OCTREE and
QCad.
This was one of my more ambitious projects.
Its current status is not so good that I dare to publish any
sources, but it can load, view and save a restricted subset of dxf
-files.
I used the superb GtkAda GUI tool kit and OpenGL for the
user interface. Here is a screen shoot:
Screenshot of GCAD.
(Last updated: 2001-10-04)
You are the
visitor of this page since {some very long time ago}.
Thank you!