-- --
-- S p e c --
-- --
--- --
--- Copyright (C) 1998-2001 Free Software Foundation, Inc. --
+-- Copyright (C) 1998-2008, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
--- ware Foundation; either version 2, or (at your option) any later ver- --
+-- ware Foundation; either version 3, or (at your option) any later ver- --
-- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
-- OUT 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 GNAT; see file COPYING. If not, write --
--- to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, --
--- MA 02111-1307, USA. --
+-- Public License distributed with GNAT; see file COPYING3. If not, go to --
+-- http://www.gnu.org/licenses for a complete copy of the license. --
-- --
--- Extensive contributions were provided by Ada Core Technologies Inc. --
+-- GNAT was originally developed by the GNAT team at New York University. --
+-- Extensive contributions were provided by Ada Core Technologies Inc. --
-- --
------------------------------------------------------------------------------
+-- Miscellaneous utilities for the cross-referencing tool
+
with Hostparm;
+with Xr_Tabls; use Xr_Tabls;
+
with GNAT.Directory_Operations; use GNAT.Directory_Operations;
with GNAT.OS_Lib; use GNAT.OS_Lib;
with GNAT.Dynamic_Tables;
-
-with Xr_Tabls; use Xr_Tabls;
with GNAT.Regexp; use GNAT.Regexp;
--- Misc. utilities for the cross-referencing tool
-
package Xref_Lib is
subtype File_Name_String is String (1 .. Hostparm.Max_Name_Length);
---------------------
-- Directory Input --
---------------------
+
type Rec_DIR is limited private;
-- This one is used for recursive search of .ali files
Invalid_Argument : exception;
-- Exception raised when there is a syntax error in the command line
- function Match
- (Pattern : Search_Pattern;
- Symbol : String)
- return Boolean;
- -- Returns true if Symbol matches one of the entities in the command line
-
-----------------------
-- Output Algorithms --
-----------------------
procedure Print_Gnatfind
- (References : in Boolean;
- Full_Path_Name : in Boolean);
- procedure Print_Unused (Full_Path_Name : in Boolean);
- procedure Print_Vi (Full_Path_Name : in Boolean);
- procedure Print_Xref (Full_Path_Name : in Boolean);
+ (References : Boolean;
+ Full_Path_Name : Boolean);
+ procedure Print_Unused (Full_Path_Name : Boolean);
+ procedure Print_Vi (Full_Path_Name : Boolean);
+ procedure Print_Xref (Full_Path_Name : Boolean);
-- The actual print procedures. These functions step through the symbol
-- table and print all the symbols if they match the files given on the
-- command line (they already match the entities if they are in the
------------------------
-- General Algorithms --
------------------------
- function Default_Project_File (Dir_Name : in String) return String;
- -- Returns the default Project file name
+
+ function Default_Project_File (Dir_Name : String) return String;
+ -- Returns the default Project file name for the directory Dir_Name
procedure Search
(Pattern : Search_Pattern;
Read_Only : Boolean;
Der_Info : Boolean;
Type_Tree : Boolean);
- -- Search every ali file (following the Readdir rule above), for
- -- each line matching Pattern, and executes Process on these
- -- lines. If World is True, Search will look into every .ali file
- -- in the object search path. If Read_Only is True, we parse the
- -- read-only ali files too. If Der_Mode is true then the derived type
- -- information will be processed. If Type_Tree is true then the type
- -- hierarchy will be search going from pattern to the parent type
+ -- Search every ALI file for entities matching Pattern, and add
+ -- these entities to the internal symbol tables.
+ --
+ -- If Wide_Search is True, all ALI files found in the object path
+ -- are searched.
+ --
+ -- If Read_Only is True, read-only ALI files will also be parsed,
+ -- similar to gnatmake -a.
+ --
+ -- If Der_Info is true, then the derived type information will be
+ -- processed.
+ --
+ -- If Type_Tree is true, then the type hierarchy will be searched
+ -- going from the pattern to the parent type.
procedure Search_Xref
(Local_Symbols : Boolean;
-- files too. If Der_Mode is true then the derived type information will
-- be processed
- ---------------
- -- ALI files --
- ---------------
-
- function Current_Xref_File
- (File : ALI_File)
- return Xr_Tabls.File_Reference;
- -- Returns the name of the file in which the last identifier
- -- is declared
-
- function File_Name
- (File : ALI_File;
- Num : Positive)
- return Xr_Tabls.File_Reference;
- -- Returns the dependency file name number Num
-
- function Get_Full_Type (Abbrev : Character) return String;
- -- Returns the full type corresponding to a type letter as found in
- -- the .ali files.
-
- procedure Open
- (Name : in String;
- File : out ALI_File;
- Dependencies : in Boolean := False);
- -- Open a new ALI file
- -- if Dependencies is True, the insert every library file 'with'ed in
- -- the files database (used for gnatxref)
-
private
type Rec_DIR is limited record
Dir : GNAT.Directory_Operations.Dir_Type;
type Dependencies is new Dependencies_Tables.Instance;
type ALI_File is limited record
- Buffer : String_Access := null;
+ Buffer : String_Access := null;
-- Buffer used to read the whole file at once
- Current_Line : Positive;
+ Current_Line : Positive;
-- Start of the current line in Buffer
- Xref_Line : Positive;
+ Xref_Line : Positive;
-- Start of the xref lines in Buffer
- X_File : Xr_Tabls.File_Reference;
+ X_File : Xr_Tabls.File_Reference;
-- Stores the cross-referencing file-name ("X..." lines), as an
-- index into the dependencies table
-- has to be. When the user enters a file:line:column on the command
-- line, it is stored as "Entity_Name Declaration_File:line:column"
+ File_Ref : Xr_Tabls.File_Reference;
+ -- A reference to the source file, if any
+
Initialized : Boolean := False;
- -- Set to True when Entity has been initialized.
+ -- Set to True when Entity has been initialized
end record;
- -- Stores all the pattern that are search for.
+
end Xref_Lib;