-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2007, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2009, 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- --
-- Id Types --
--------------
- -- The various entries are stored in tables with distinct subscript
- -- ranges. The following type definitions indicate the ranges used
- -- for the subscripts (Id values) for the various tables.
+ -- The various entries are stored in tables with distinct subscript ranges.
+ -- The following type definitions show the ranges used for the subscripts
+ -- (Id values) for the various tables.
type ALI_Id is range 0 .. 999_999;
-- Id values used for ALIs table entries
-- V lines are ignored as a result of the Ignore_Lines parameter.
Ver_Len : Natural;
- -- Length of characters stored in Ver. Not set if V lines are
- -- ignored as a result of the Ignore_Lines parameter.
+ -- Length of characters stored in Ver. Not set if V lines are ignored as
+ -- a result of the Ignore_Lines parameter.
SAL_Interface : Boolean;
-- Set True when this is an interface to a standalone library
-- Set to True if file was compiled with Normalize_Scalars. Not set if
-- 'P' appears in Ignore_Lines.
- Optimize_Alignment_Setting : Character;
- -- Optimize_Alignment setting. Set to S/T if OS/OT parameters present,
- -- otherwise set to 'O' (S/T/O = Space/Time/Off). Not set if 'P' appears
- -- in Ignore_Lines.
-
Unit_Exception_Table : Boolean;
-- Set to True if unit exception table pointer generated. Not set if 'P'
-- appears in Ignore_Lines.
-- for the body right after the call for the spec, or at least as close
-- together as possible.
+ Optimize_Alignment : Character;
+ -- Optimize_Alignment setting. Set to L/S/T/O for OL/OS/OT/OO present
+
end record;
package Units is new Table.Table (
Float_Format_Specified : Character := ' ';
-- Set to blank by Initialize_ALI. Set to appropriate float format
- -- character (V or I, see Opt.Float_Format) if an an ali file that
+ -- character (V or I, see Opt.Float_Format) if an ali file that
-- is read contains an F line setting the floating point format.
Initialize_Scalars_Used : Boolean := False;
SAL_Interface : Boolean := False;
-- True if the Unit is an Interface of a Stand-Alone Library
+ Limited_With : Boolean := False;
+ -- True if unit is named in a limited_with_clause
end record;
package Withs is new Table.Table (
-- Sdep (Source Dependency) Table --
------------------------------------
- -- Each source dependency (D line) in an ALI file generates an
- -- entry in the Sdep table.
+ -- Each source dependency (D line) in an ALI file generates an entry in the
+ -- Sdep table.
-- Note: there will be no entries in this table if 'D' lines are ignored
-- Special value indicating no Sdep table entry
First_Sdep_Entry : Sdep_Id := No_Sdep_Id + 1;
- -- Id of first Sdep entry for current ali file. This is initialized to
- -- the first Sdep entry in the table, and then incremented appropriately
- -- as successive ALI files are scanned.
+ -- Id of first Sdep entry for current ali file. This is initialized to the
+ -- first Sdep entry in the table, and then incremented appropriately as
+ -- successive ALI files are scanned.
type Sdep_Record is record
-- Name of source file
Stamp : Time_Stamp_Type;
- -- Time stamp value. Note that this will be all zero characters
- -- for the dummy entries for missing or non-dependent files.
+ -- Time stamp value. Note that this will be all zero characters for the
+ -- dummy entries for missing or non-dependent files.
Checksum : Word;
- -- Checksum value. Note that this will be all zero characters
- -- for the dummy entries for missing or non-dependent files
+ -- Checksum value. Note that this will be all zero characters for the
+ -- dummy entries for missing or non-dependent files
Dummy_Entry : Boolean;
- -- Set True for dummy entries that correspond to missing files
- -- or files where no dependency relationship exists.
+ -- Set True for dummy entries that correspond to missing files or files
+ -- where no dependency relationship exists.
Subunit_Name : Name_Id;
-- Name_Id for subunit name if present, else No_Name
Rfile : File_Name_Type;
- -- Reference file name. Same as Sfile unless a Source_Reference
- -- pragma was used, in which case it reflects the name used in
- -- the pragma.
+ -- Reference file name. Same as Sfile unless a Source_Reference pragma
+ -- was used, in which case it reflects the name used in the pragma.
Start_Line : Nat;
-- Starting line number in file. Always 1, unless a Source_Reference
-- Use of Name Table Info --
----------------------------
- -- All unit names and file names are entered into the Names table. The
- -- Info fields of these entries are used as follows:
+ -- All unit names and file names are entered into the Names table. The Info
+ -- fields of these entries are used as follows:
-- Unit name Info field has Unit_Id of unit table entry
-- ALI file name Info field has ALI_Id of ALI table entry
-- Cross-Reference Data --
--------------------------
- -- The following table records cross-reference sections, there is one
- -- entry for each X header line in the ALI file for an xref section.
+ -- The following table records cross-reference sections, there is one entry
+ -- for each X header line in the ALI file for an xref section.
-- Note: there will be no entries in this table if 'X' lines are ignored
Oref_File_Num : Sdep_Id;
-- This field is set to No_Sdep_Id if the entity doesn't override any
- -- other entity, or to the dependency reference for the overriden
+ -- other entity, or to the dependency reference for the overridden
-- entity.
Oref_Line : Nat;
Oref_Col : Nat;
- -- These two fields are set to the line and column of the overriden
+ -- These two fields are set to the line and column of the overridden
-- entity.
First_Xref : Nat;
-- Ignore_Lines requests that Scan_ALI ignore any lines that start
-- with any given key character. The default value of X causes all
-- Xref lines to be ignored. The corresponding data in the ALI
- -- tables will not be filled in in this case. It is not possible
+ -- tables will not be filled in this case. It is not possible
-- to ignore U (unit) lines, they are always read.
--
-- Read_Lines requests that Scan_ALI process only lines that start
-- (unit) lines are always read regardless of the value of this
-- parameter.
--
- -- Note: either Ignore_Lines or Read_Lines should be non-null.
- -- but not both. If both are given then only the Read_Lines
- -- value is processed, and the Ignore_Lines parameter is
- -- not processed.
+ -- Note: either Ignore_Lines or Read_Lines should be non-null, but not
+ -- both. If both are provided then only the Read_Lines value is used,
+ -- and the Ignore_Lines parameter is ignored.
--
-- Read_XREF is set True to read and acquire the cross-reference
- -- information. If Read_XREF is set to True, then the effect is
- -- to ignore all lines other than U, W, D and X lines and the
- -- Ignore_Lines and Read_Lines parameters are ignored (i.e. the
- -- use of True for Read_XREF is equivalent to specifying an
- -- argument of "UWDX" for Read_Lines.
+ -- information. If Read_XREF is set to True, then the effect is to ignore
+ -- all lines other than U, W, D and X lines and the Ignore_Lines and
+ -- Read_Lines parameters are ignored (i.e. the use of True for Read_XREF
+ -- is equivalent to specifying an argument of "UWDX" for Read_Lines.
--
-- Ignore_Errors is normally False. If it is set True, then Scan_ALI
-- will do its best to scan through a file and extract all information