[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2. ASIS Extensions

ASIS-for-GNAT provides some additional types and queries as ASIS extensions. All these queries are defined and documented in the hierarchy headed by package Asis.Extensions. They are referred as "ASIS extensions" or "ASIS extension queries" below.

All the ASIS extensions obey the general ASIS rules:

If the documentation of an ASIS extension query contains a list of "appropriate" Element kinds, then the query can be applied only to Elements from this list, and it raises ASIS_Inappropriate_Element with Value_Error status otherwise. If the documentation of an ASIS extension query contains a list of "expected" element kinds, then the query can be applied to an Element having any kind, but it returns a meaningful result only for Elements from this list.

The current set of ASIS extensions originated from the ASIS implementation needs and from the development of some ASIS tools inside the ASIS-for-GNAT team. The Asis.Extensions hierarchy is not necessarily frozen: some further extension queries may be added, and suggestions from ASIS application developers are welcome.

Note that some of the ASIS extensions are implemented as ASIS secondary queries -- that is, the implementation of such a query is a sequence of primary ASIS queries. Some other extensions are pure extensions; that is, their implementation is based on direct access to GNAT's internal data structures.

2.1 Asis.Extensions  
2.2 Asis.Extensions.Flat_Kinds  
2.3 Asis.Extensions.Iterator  


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.1 Asis.Extensions

This package, whose spec is located in the file `asis-extensions.ads', contains the declarations of various ASIS extensions, including dynamic Element and Compilation_Unit list types, placeholder actual parameters for Asis.Iterator.Traverse_Element, additional Element structural and semantic queries, queries that return information about the status of the source file for a Compilation_Unit, queries returning the (images of the) values of static expressions, etc.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.2 Asis.Extensions.Flat_Kinds

The ASIS Element classification hierarchy is based on a set of Ada enumeration types, each corresponding to a "level" in the hierarchy. The package Asis.Extensions.Flat_Kinds, whose spec is located in the file `asis-extensions-flat_kinds.ads', defines the enumeration type Flat_Element_Kinds; this type combines the values of all these types and thus provides a "flat" view onto the syntactic Element classification.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.3 Asis.Extensions.Iterator

This package, whose spec is located in the file `asis-extensions-iterator.ads', contains the declarations of Traverse_Unit generic procedure that is a generalization of the standard ASIS Asis.Iterator.Traverse_Element iterator. Traverse_Unit provides the depth-first traversal of the whole syntactical structure of the ASIS Compilation Unit.


[ << ] [ >> ]           [Top] [Contents] [Index] [ ? ]

This document was generated by Mail Server on May, 19 2009 using texi2html