------------------------------------------------------------------------------
-- --
-- ASIS APPLICATION TEMPLATE COMPONENTS --
-- --
-- A S I S _ A P P L I C A T I O N _ D R I V E R _ 1 --
-- --
-- B o d y --
-- --
-- Copyright (c) 2000, Free Software Foundation, Inc. --
-- --
-- ASIS Application Templates are free software; you can redistribute it --
-- and/or modify it under terms of the GNU General Public License as --
-- published by the Free Software Foundation; either version 2, or (at your --
-- option) any later version. ASIS Application Templates are distributed in --
-- the hope that they will be useful, but WITHOUT ANY WARRANTY; without --
-- even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR --
-- PURPOSE. See the GNU General Public License for more details. You should --
-- have received a copy of the GNU General Public License distributed with --
-- distributed with GNAT; see file COPYING. If not, write to the Free --
-- Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, --
-- USA. --
-- --
-- ASIS Application Templates were developed and are now maintained by Ada --
-- Core Technologies Inc (http://www.gnat.com). --
-- --
------------------------------------------------------------------------------
with Ada.Exceptions;
with Ada.Wide_Text_IO;
with Ada.Characters.Handling;
with Asis;
with Asis.Ada_Environments;
with Asis.Implementation;
with Asis.Exceptions;
with Asis.Errors;
with Context_Processing;
procedure ASIS_Application_Driver_1 is
My_Context : Asis.Context;
My_Context_Name : Wide_String := Asis.Ada_Environments.Default_Name;
-- The default name in case of the GNAT ASIS implementation is empty.
-- If you would like to have some non-null name for your ASIS Context,
-- change the initialization expression in this declaration. Note, that
-- in the GNAT ASIS implementation the name of a Context does not have any
-- special meaning or semantics associated with particular names.
My_Context_Parameters : Wide_String :=
Asis.Ada_Environments.Default_Parameters;
-- The default COntext parameters in case of the GNAT ASIS implementation
-- are an empty string. This corresponds to the following Context
-- definition: "-CA -FT -SA", and has the following meaning:
-- -CA - a Context is made up by all the tree files in the tree search
-- path; the tree search path is not set, so the default is used,
-- and the default is the current directory;
-- -FT - only pre-created trees are used, no tree file can be created by
-- ASIS;
-- -SA - source files for all the Compilation Units belonging to the
-- Context (except the predefined Standard package) are considered
-- in the consistency check when opening the Context;
--
-- If you would like to use some other Context definition, you have to
-- replace the initialization expression in this declaration by
-- the corresponding Parameters string. See the ASIS Reference Manual for
-- the full details of the Context definition for the GNAT ASIS
-- implementation.
Initialization_Parameters : Wide_String := "";
Finalization_Parameters : Wide_String := "";
-- If you would like to use some specific initialization or finalization
-- parameters, you may set them here as initialization expressions in
-- the declarations above.
begin
-- The code below corresponds to the basic sequencing of calls to ASIS
-- queries which is mandatory for any ASIS application.
-- First, the ASIS implementation should be initialized
-- (Asis.Implementation.Initialize), then an application should define
-- an ASIS Context to process by associating the Context with an external
-- environment (Asis.Ada_Environments.Associate), then the Context should
-- be opened (sis.Ada_Environments.Open ). After that all the ASIS queries
-- may be used (the ASIS processing is encapsulated in
-- Context_Processing.Process_Context. When the ASIS analysis is over, the
-- application should release the system resources by closing the ASIS
-- Context (Asis.Ada_Environments.Close), breaking the association of the
-- Context with the external world (Asis.Ada_Environments.Dissociate) and
-- finalizing the ASIS implementation (Asis.Implementation.Finalize).
Asis.Implementation.Initialize (Initialization_Parameters);
Asis.Ada_Environments.Associate
(The_Context => My_Context,
Name => My_Context_Name,
Parameters => My_Context_Parameters);
Asis.Ada_Environments.Open (My_Context);
Context_Processing.Process_Context (The_Context => My_Context,
Trace => True);
Asis.Ada_Environments.Close (My_Context);
Asis.Ada_Environments.Dissociate (My_Context);
Asis.Implementation.Finalize (Finalization_Parameters);
exception
-- The exception handling in this driver is somewhat redundant and may
-- need some reconsidering when using this driver in real ASIS tools
when Ex : Asis.Exceptions.ASIS_Inappropriate_Context |
Asis.Exceptions.ASIS_Inappropriate_Container |
Asis.Exceptions.ASIS_Inappropriate_Compilation_Unit |
Asis.Exceptions.ASIS_Inappropriate_Element |
Asis.Exceptions.ASIS_Inappropriate_Line |
Asis.Exceptions.ASIS_Inappropriate_Line_Number |
Asis.Exceptions.ASIS_Failed =>
Ada.Wide_Text_IO.Put ("ASIS exception (");
Ada.Wide_Text_IO.Put (Ada.Characters.Handling.To_Wide_String (
Ada.Exceptions.Exception_Name (Ex)));
Ada.Wide_Text_IO.Put (") is raised");
Ada.Wide_Text_IO.New_Line;
Ada.Wide_Text_IO.Put ("ASIS Error Status is ");
Ada.Wide_Text_IO.Put
(Asis.Errors.Error_Kinds'Wide_Image (Asis.Implementation.Status));
Ada.Wide_Text_IO.New_Line;
Ada.Wide_Text_IO.Put ("ASIS Diagnosis is ");
Ada.Wide_Text_IO.New_Line;
Ada.Wide_Text_IO.Put (Asis.Implementation.Diagnosis);
Ada.Wide_Text_IO.New_Line;
Asis.Implementation.Set_Status;
when Ex : others =>
Ada.Wide_Text_IO.Put (Ada.Characters.Handling.To_Wide_String (
Ada.Exceptions.Exception_Name (Ex)));
Ada.Wide_Text_IO.Put (" is raised (");
Ada.Wide_Text_IO.Put (Ada.Characters.Handling.To_Wide_String (
Ada.Exceptions.Exception_Information (Ex)));
Ada.Wide_Text_IO.Put (")");
Ada.Wide_Text_IO.New_Line;
end ASIS_Application_Driver_1;
syntax highlighted by Code2HTML, v. 0.9.1