The GRASP Project has created an algorithmic-level graphical representation for software called the Control Structure Diagram (CSD). The CSD was created to improve the comprehension efficiency of Ada source code and, as a result, improve software reliability and reduce software costs. Since its creation, the CSD has been expanded and adapted to include other languages. GRASP provides the capability to generate CSD's from Ada 95, C, C++, Java, and VHDL source code in both a reverse and forward engineering mode with a level of flexibility suitable for professional application. GRASP has been integrated with the GNU family of compilers for Ada (GNAT) and C (gcc), and Sun's javac compiler for Java. Use of GRASP is not restricted to these compilers, however. This has resulted in a comprehensive graphically-based development environment for these languages. The user may view, edit, print, and compile source code as CSDs with no discernible addition to storage or computational overhead.
The Simple components for Ada library provides implementations of smart pointers for automatically collected objects (using reference counting), object persistence, unbounded and bounded arrays of smart pointers, generic unbounded arrays of private objects and plain pointers, generic sets, maps, directed graphs, directed weighted graphs, stacks, and storage pools. It also includes table management, string editing, IEEE 754 support, and infix expression parsing tools. Implementations of some lock-free shared data structures are provided.
This library provides an implementation of tables indexed by strings. The binary search is used for names of known length. It is also possible to search a table for names of unknown length, i.e. to parse a string using some table. Table elements can be of any private type. Key- insensitive tables are supported.