Welcome to AdaCL

AdaCL is a library to write small, script-like programs in Ada. The following functions are implemented:

Filtering of text files
(global search and replace) This functionality is used for example in creating the extended Booch components and the documentation you are just reading. Also used in conjunction with AdaCL.CGI to create dynamic web pages. See SAR for more details.
String tools
A Get_Line which really works. Raw String I/O. Search and replace in strings.
Encoding-aware strings (EAstrings)
An unbounded string type that keeps track of character encodings and transcodes automatically.
Execution of external programs
(including redirection of standard input and standard output) Wait for a specific process on asynchronous execution. Read from and write to the process' standard input and standard output. See OS for more details.
Command line parsing
There are two different solutions for command line handling, complementing each other:
GetOpt
A high level command line parser for Gnu style command lines.
Orto
A complete command line parameter handler that makes command line parameters work more like subprogram parameters.
A thick binding to the Common Gateway Interface (CGI)
The most complete of all Ada bindings to the Common Gateway Interface (CGI) and the only binding to support file upload multipart/form-data. See GGI for more details.
An optional thick binding to the Boehm-Demers-Weiser conservative garbage collector
Removes the need to deallocate memory. GarbageCollector for more details.
Extension kit for the Ada95 Booch Components
Stores limited objects. This, too, eases up memory management. See BC for more details.

While GNAT itself has built-in support for most of this functionality, AdaCL uses tagged types for almost everything. This makes all functions far more powerful and easier to extend. Also care has been taken to keep all objects thread and "Annex E" safe.

Demo Programs

Most demo programs are for personal or project use. However, you can use them for enlightenment as well. To help you along here a some hints:

  • There are two groups of demos. The demos with a full featured command line parser and the ones without.
  • You will find the interesting part of the demos with command line parser within the *-CommandLine.adb files.
  • You will find the interesting part of the demos without command line parser within the *-Main.adb files.

Most is not all so take a look at sarDo (use sarDo --help).

Features

Please note that not all features work with all versions of GNAT. For example, OS/2 can't create a debug version, not all platforms support dynamic link libraries.

How to Use

See How To Use.

Directory Structure

Where to find what.

./
Make files, project files etc. pp.
./Archive
Archives for Source-Forge releases. Populated by make pack.
./Document
Documentation files in html.
./Document/AdaDoc
Documentation files in HTML generated by AdaDoc. Populated by make doc.
./Document/AdaBrowse
Documentation files in HTML generated by AdaBrowse. Populated by make browse.
./Document/html
Documentation files in HTML generated by gnathtml. Populated by make html.
./Include
OS independent source files.
./Include/Linux
Linux only source files of AdaCl.
./Include/NT
NT only source files of AdaCl.
./Include/OS2
OS/2 only source files of AdaCl.
./Include/With_GC
Source files to enable garbage collector support.
./Include/Without_GC
Source files to disable garbage collector support.
./Linux-Debug
Debug compile for demo programs with Linux. Populated by make debug_tools.
./Linux-Debug/exe
Object files for Linux demos. Populated by make tools_debug.
./Linux-Debug/lib
Library files for Linux make debug.
./Linux-Debug/obj
Object files for Linux. Populated by make debug.
./Linux-Release
Release compile for demo programs with Linux. Populated by make release_tools.
./Linux-Release/exe
Object files for Linux demos. Populated by make release_tools.
./Linux-Release/lib
Library files for Linux. Populated by make release.
./Linux-Release/obj
Object files for Linux. Populated by make release.
./Model
UML Models. However I did not find a free tool which supports Ada sufficiently so I have given up on them.
./Model/templates
Templates for xmi2code.
./NT-Debug
Debug compile for demo programs with Windows NT. Populated by make debug_tools.
./NT-Debug/exe
Object files for Windows NT demos. Populated by make debug_tools.
./NT-Debug/lib
Library files for Windows NT. Populated by make debug.
./NT-Debug/obj
Object files for Windows NT. Populated by make debug.
./NT-Release
Release compile for demo programs with Windows NT. Populated by make release_tools.
./NT-Release/exe
Object files for Windows NT demos. Populated by make release_tools.
./NT-Release/lib
Library files for Windows NT. Populated by make release.
./NT-Release/obj
Object files for Windows NT. Populated by make release.
./OS2-Debug
Debug compile for demo programs with OS/2. Populated by make debug_tools.
./OS2-Debug/exe
Object files for OS/2 demos. Populated by make debug_tools.
./OS2-Debug/lib
Library files for OS/2. Populated by make debug.
./OS2-Debug/obj
Object files for OS/2. Populated by make debug.
./OS2-Release
Release compile for demo programs with OS/2. Populated by make release_tools.
./OS2-Release/exe
Object files for OS/2 demos. Populated by make release_tools.
./OS2-Release/lib
Library files for OS/2. Populated by make release.
./OS2-Release/obj
Object files for OS/2. Populated by make release.
./Scripts
Configuration files for GNAT and GNATPREP.
./Source
Source of the demo programs.
./Test
Input and Output files for test programs. The Test programs are started with make testAda, make testCpp, etc. pp.

Ada programming, © 2005,2006 the Authors, Content is available under GNU Free Documentation License.