------------------------------------------------------------------------------
-- --
-- ASIS Tester And iNTerpreter (ASIStant) COMPONENTS --
-- --
-- A S I S T A N T . A D D _ O N S --
-- --
-- B o d y --
-- --
-- Copyright (c) 1997-1999, Free Software Foundation, Inc. --
-- --
-- ASIStant is 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. ASIStant is distributed in the hope that it will be useful, --
-- but WITHOUT ANY WARRANTY; without even the implied warranty of MER- --
-- CHANTABILITY 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 GNAT; see file COPYING. If --
-- not, write to the Free Software Foundation, 59 Temple Place Suite 330, --
-- Boston, MA 02111-1307, USA. --
-- --
-- ASIStant is an evolution of ASIStint tool that was created by --
-- Vasiliy Fofanov as part of a collaboration between Software Engineering --
-- Laboratory of the Swiss Federal Institute of Technology in Lausanne, --
-- Switzerland, and the Scientific Research Computer Center of the Moscow --
-- University, Russia, supported by the Swiss National Science Foundation --
-- grant #7SUPJ048247, "Development of ASIS for GNAT with industry quality" --
-- --
-- ASIStant is distributed as a part of the ASIS implementation for GNAT --
-- (ASIS-for-GNAT) and is maintained by Ada Core Technologies Inc --
-- (http://www.gnat.com). --
------------------------------------------------------------------------------
with Asis;
with Asis.Text;
with ASIStant.Common, ASIStant.Table;
use ASIStant.Common, ASIStant.Table;
package body ASIStant.Add_Ons is
------------------------------------------------------------------------------
-- Additional queries
------------------------------------------------------------------------------
---------------------------------------------------------------------------
-- Nil_*** queries
---------------------------------------------------------------------------
function Nil_Compilation_Unit return Asis.Compilation_Unit is
begin
return Asis.Nil_Compilation_Unit;
end Nil_Compilation_Unit;
function Nil_Compilation_Unit_List return Asis.Compilation_Unit_List is
begin
return Asis.Nil_Compilation_Unit_List;
end Nil_Compilation_Unit_List;
function Nil_Element return Asis.Element is
begin
return Asis.Nil_Element;
end Nil_Element;
function Nil_Element_List return Asis.Element_List is
begin
return Asis.Nil_Element_List;
end Nil_Element_List;
function Nil_Relationship
return Asis.Compilation_Units.Relations.Relationship is
begin
return Asis.Compilation_Units.Relations.Nil_Relationship;
end Nil_Relationship;
---------------------------------------------------------------------------
-- Queries to access Span fields
---------------------------------------------------------------------------
function First_Line (Sp : in Asis.Text.Span) return Integer is
begin
return Sp.First_Line;
end First_Line;
function First_Column (Sp : in Asis.Text.Span) return Integer is
begin
return Sp.First_Column;
end First_Column;
function Last_Line (Sp : in Asis.Text.Span) return Integer is
begin
return Sp.Last_Line;
end Last_Line;
function Last_Column (Sp : in Asis.Text.Span) return Integer is
begin
return Sp.Last_Column;
end Last_Column;
---------------------------------------------------------------------------
-- Queries to access Relationship fields
---------------------------------------------------------------------------
function Consistent (R : Asis.Compilation_Units.Relations.Relationship)
return Asis.Compilation_Unit_List is
begin
return R.Consistent;
end Consistent;
function Inconsistent (R : Asis.Compilation_Units.Relations.Relationship)
return Asis.Compilation_Unit_List is
begin
return R.Inconsistent;
end Inconsistent;
function Missing (R : Asis.Compilation_Units.Relations.Relationship)
return Asis.Compilation_Unit_List is
begin
return R.Missing;
end Missing;
function Circular (R : Asis.Compilation_Units.Relations.Relationship)
return Asis.Compilation_Unit_List is
begin
return R.Circular;
end Circular;
------------------------------------------------------------------------------
-- Service queries
------------------------------------------------------------------------------
---------------------------------------------------------------------------
-- List handling
---------------------------------------------------------------------------
function Length (Q : Query_Result) return Integer is
I : Integer;
begin
case Q.RType is
when Par_CUnitList =>
I := Q.CL.all'Length;
when Par_ElemList =>
I := Q.EL.all'Length;
when Par_Line =>
I := Asis.Text.Length (Q.L);
when Par_Line_List =>
I := Q.LL.all'Length;
when Par_String =>
I := Q.S.all'Length;
when Par_DDA_Array_Component_List =>
I := Q.ACL.all'Length;
when Par_DDA_Record_Component_List =>
I := Q.RCL.all'Length;
when others =>
Error (ERR_UNKNOWNSYNTAX, "Length");
end case;
return I;
end Length;
---------------------------------------------------------------------------
-- Wide_String handling
---------------------------------------------------------------------------
function Concat (S1, S2 : in Wide_String) return Wide_String is
begin
return S1 & S2;
end Concat;
function Eq (S1, S2 : in Wide_String) return Boolean is
begin
return S1 = S2;
end Eq;
function Lt (S1, S2 : in Wide_String) return Boolean is
begin
return S1 < S2;
end Lt;
function Gt (S1, S2 : in Wide_String) return Boolean is
begin
return S1 > S2;
end Gt;
---------------------------------------------------------------------------
-- Integer handling
---------------------------------------------------------------------------
function Add (I1, I2 : in Integer) return Integer is
begin
return I1 + I2;
end Add;
function Sub (I1, I2 : in Integer) return Integer is
begin
return I1 - I2;
end Sub;
function Eq (I1, I2 : in Integer) return Boolean is
begin
return I1 = I2;
end Eq;
function Lt (I1, I2 : in Integer) return Boolean is
begin
return I1 < I2;
end Lt;
function Gt (I1, I2 : in Integer) return Boolean is
begin
return I1 > I2;
end Gt;
end ASIStant.Add_Ons;
syntax highlighted by Code2HTML, v. 0.9.1