/ada-traits-containers

Generic Ada Library for Algorithms and Containers

Primary LanguageAdaOtherNOASSERTION

Generic Ada Library for Algorithms and Containers

Goals

This library is another containers library for Ada. Although it provides containers that do not exist in the standard Ada runtime (graphs for instance), it is more interesting for the flexibility it proposes:

  • Bounded/Unbounded containers and even more variants suitable for use with the SPARK language.

  • Finite/Indefinite elements, and even more specialized variants optimized for specific types

  • Pre and Post conditions, compatible with SPARK, so that some variants of the containers can be used for proof.

  • Highly efficient; the user has full control over memory allocations, checks, locks, ...

All this flexibility is done via the intensive use of generic packages, themselves used to instantiate other generic packages.

Check the documentation for more details on the design of the API, and its current usage.

Compiling

The library itself is pure Ada code, and only requires a working Ada compiler to be available in your environment.

This library comes with a testsuite which measures the performance of the various variants of the containers, and compares them with C++ equivalent (or near equivalents). This testsuite generates a nice interactive HTML file.

Compiling and running the testsuite requires that you also have a C++ compiler in your environment. In addition, you must install the Boost Graph Library (http://www.boost.org).

You must also download and install the GNAT Components Collection.

Finally, in order to run the testsuite, you need to install GNATpython and PyYAML in your Python2 environment. You can install both with the following command:

pip install -r REQUIREMENTS.txt

Once this is done, modify the shared.gpr file. Set the variable ```Boost_Include''' to point to the install prefix for Boost:

   Boost_Include := ("-I/usr/include");

Finally, compile and run the test with

make all perfs

and finally open the file tests/perfs/index.html in a browser to view the performance comparison.

Editing with GNAT Programming Studio

To edit with GPS, including the tests, you must first run:

make projects

Then you can edit by launching GPS from the top directory, which will automatically load the aggregate project 'root.gpr'