Anders' Ada software page

Feel free to drop me an e-mail if you find some of this software useful or have other comments or suggestions.

News


Ada Add Finalization Anywhere Library (GPL) EXPERIMENTAL

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

Known bugs:

(Last updated: 2004-09-22)


Ada binding for the atomic synchronization primitives available on (some) modern processors (GPL)

This has been moved to my Non-Blocking Ada page. That page also contains a small collection of lock-free data structures.


Ada Mini SSC II interface (GPL)

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.

MiniSSCII.tar.gz

(Last updated: 2003-03-24)


Ada Video4Linux binding (GPL)

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 ;)

Video4Linux.tar.gz

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)


Ada Image package (GPL)

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.

Image.tar.gz

(Last updated: 2000-09-01)


Ada Map package (GPL)

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.

Map.tar.gz

(Last updated: 2002-05-31)


Ada Search tree package (GPL)

This is a small search tree ADT. The implementation uses a random treap, which makes it both efficient and simple.

Search_Tree.tar.gz

(Last updated: 2001-02-05)


GCAD - My 3D editor/viewer project (GPL)

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:

GCad screenshot
Screenshot of GCAD.

(Last updated: 2001-10-04)





back to Anders' home page


Valid HTML 4.01! Valid CSS!

Email: anders-www [at] gidenstam.org
Comments and suggestions are welcome!




http://www.digits.com

You are the <counter> visitor of this page since {some very long time ago}. Thank you!