The (free) Ada95 Booch Components Get Ada 95 Booch Components at
SourceForge.net. Fast, secure and Free Open Source software downloads

Overview

--

--

History

The Ada 95 Booch Components began in late 1994 when David Weller began a port of Grady Booch's C++ components.

A first beta release was soon available, followed by a release in February 1997.

In December of that year, David concluded that he wouldn't be able to continue with the Components and appealed on the Team Ada mailing list for a volunteer. Having already found the Components very useful, I got my employers' permission to take them on (not a speedy process); work began 18.vii.98.

Storage Management was added in August 1998 by Pat Rogers, thanks very much Pat! (you may like to visit Pat's web site).

License

The Components are issued under the GNU General Public Licence. The units that you need to instantiate and compile in order to use the Components in your own software are licenced under the "GNAT-modified GPL", which adds the following to the normal GPL permissions:

As a special exception, if other files instantiate generics from this unit, or you link this unit with other files to produce an executable, this unit does not by itself cause the resulting executable to be covered by the GNU General Public License. This exception does not however invalidate any other reasons why the executable file might be covered by the GNU Public License.

The Software

See the Component Documentation for the details.

Tests, demonstrations and contributions

The Components are tested with GNAT. I try hard not to release anything that doesn't work with the latest public version.

You'll find a set of notes on various compiler problems.

The Components come with test and demonstration code samples.

There is also a collection of contributions (in the repository, and the distribution, under contrib/).

Issues

Please feel free to mail me with any thoughts you may have!

Lists; to use or not to use?
Many people, faced with the BCs for the first time, choose Lists (Single or Double) as their standard Container.
This is probably not the best choice. Lists are complex entities which, I suppose, would be useful if you were implementing a list-processing engine like Lisp.
You'll be a lot better off using Collections!
Hierarchy, Graphs, Lists and Trees
Most of the Components are derived from BC.Containers.Container (and are in packages that are children of BC.Containers). The only feature common at this level is iteration; implicit in the fact that BC.Containers is a generic package parameterised by the type Item is that Containers contain just one sort of thing.
This works fine except for Graphs; a Graph is a collection of Vertices (OK so far), while Vertices are connected by (not collections of) Arcs. Graphs will remain outside the Containers hierarchy.
Trees aren't Containers, largely because of the difficulty of supporting standard Iterators in a non-linear structure like a Tree, but also because they are "polylithic" (Grady's term, implies structural sharing).
Lists aren't Containers, because they are polylithic.
That said, I've tried to use a common style throughout.

--

[index]