------------------------------------------------------------------------------ -- -- -- GNAT COMPILER COMPONENTS -- -- -- -- L I B . L I S T -- -- -- -- B o d y -- -- -- -- 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- -- -- 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. -- -- -- -- As a special exception under Section 7 of GPL version 3, you are granted -- -- additional permissions described in the GCC Runtime Library Exception, -- -- version 3.1, as published by the Free Software Foundation. -- -- -- -- You should have received a copy of the GNU General Public License and -- -- a copy of the GCC Runtime Library Exception along with this program; -- -- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -- -- . -- -- -- -- GNAT was originally developed by the GNAT team at New York University. -- -- Extensive contributions were provided by Ada Core Technologies Inc. -- -- -- ------------------------------------------------------------------------------ separate (Lib) procedure List (File_Names_Only : Boolean := False) is Num_Units : constant Nat := Int (Units.Last) - Int (Units.First) + 1; -- Number of units in file table Sorted_Units : Unit_Ref_Table (1 .. Num_Units); -- Table of unit numbers that we will sort Unit_Hed : constant String := "Unit name "; Unit_Und : constant String := "--------- "; Unit_Bln : constant String := " "; File_Hed : constant String := "File name "; File_Und : constant String := "--------- "; File_Bln : constant String := " "; Time_Hed : constant String := "Time stamp"; Time_Und : constant String := "----------"; Unit_Length : constant Natural := Unit_Hed'Length; File_Length : constant Natural := File_Hed'Length; begin -- First step is to make a sorted table of units for J in 1 .. Num_Units loop Sorted_Units (J) := Unit_Number_Type (Int (Units.First) + J - 1); end loop; Sort (Sorted_Units); -- Now we can generate the unit table listing Write_Eol; if not File_Names_Only then Write_Str (Unit_Hed); Write_Str (File_Hed); Write_Str (Time_Hed); Write_Eol; Write_Str (Unit_Und); Write_Str (File_Und); Write_Str (Time_Und); Write_Eol; Write_Eol; end if; for R in Sorted_Units'Range loop if File_Names_Only then if not Is_Internal_File_Name (File_Name (Source_Index (Sorted_Units (R)))) then Write_Name (Full_File_Name (Source_Index (Sorted_Units (R)))); Write_Eol; end if; else Write_Unit_Name (Unit_Name (Sorted_Units (R))); if Name_Len > (Unit_Length - 1) then Write_Eol; Write_Str (Unit_Bln); else for J in Name_Len + 1 .. Unit_Length loop Write_Char (' '); end loop; end if; Write_Name (Full_File_Name (Source_Index (Sorted_Units (R)))); if Name_Len > (File_Length - 1) then Write_Eol; Write_Str (Unit_Bln); Write_Str (File_Bln); else for J in Name_Len + 1 .. File_Length loop Write_Char (' '); end loop; end if; Write_Str (String (Time_Stamp (Source_Index (Sorted_Units (R))))); Write_Eol; end if; end loop; Write_Eol; end List;