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.
