]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/ada/lib-list.adb
c++: Handle multiple aggregate overloads [PR95319].
[thirdparty/gcc.git] / gcc / ada / lib-list.adb
CommitLineData
38cbfe40
RK
1------------------------------------------------------------------------------
2-- --
3-- GNAT COMPILER COMPONENTS --
4-- --
5-- L I B . L I S T --
6-- --
7-- B o d y --
8-- --
1d005acc 9-- Copyright (C) 1992-2019, Free Software Foundation, Inc. --
38cbfe40
RK
10-- --
11-- GNAT is free software; you can redistribute it and/or modify it under --
12-- terms of the GNU General Public License as published by the Free Soft- --
748086b7 13-- ware Foundation; either version 3, or (at your option) any later ver- --
38cbfe40
RK
14-- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
15-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
748086b7
JJ
16-- or FITNESS FOR A PARTICULAR PURPOSE. --
17-- --
18-- As a special exception under Section 7 of GPL version 3, you are granted --
19-- additional permissions described in the GCC Runtime Library Exception, --
20-- version 3.1, as published by the Free Software Foundation. --
21-- --
22-- You should have received a copy of the GNU General Public License and --
23-- a copy of the GCC Runtime Library Exception along with this program; --
24-- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see --
25-- <http://www.gnu.org/licenses/>. --
38cbfe40
RK
26-- --
27-- GNAT was originally developed by the GNAT team at New York University. --
71ff80dc 28-- Extensive contributions were provided by Ada Core Technologies Inc. --
38cbfe40
RK
29-- --
30------------------------------------------------------------------------------
31
38cbfe40
RK
32separate (Lib)
33procedure List (File_Names_Only : Boolean := False) is
34
35 Num_Units : constant Nat := Int (Units.Last) - Int (Units.First) + 1;
36 -- Number of units in file table
37
38 Sorted_Units : Unit_Ref_Table (1 .. Num_Units);
39 -- Table of unit numbers that we will sort
40
38cbfe40
RK
41 Unit_Hed : constant String := "Unit name ";
42 Unit_Und : constant String := "--------- ";
43 Unit_Bln : constant String := " ";
44 File_Hed : constant String := "File name ";
45 File_Und : constant String := "--------- ";
46 File_Bln : constant String := " ";
47 Time_Hed : constant String := "Time stamp";
48 Time_Und : constant String := "----------";
49
50 Unit_Length : constant Natural := Unit_Hed'Length;
51 File_Length : constant Natural := File_Hed'Length;
52
53begin
54 -- First step is to make a sorted table of units
55
56 for J in 1 .. Num_Units loop
57 Sorted_Units (J) := Unit_Number_Type (Int (Units.First) + J - 1);
58 end loop;
59
60 Sort (Sorted_Units);
61
62 -- Now we can generate the unit table listing
63
64 Write_Eol;
65
66 if not File_Names_Only then
67 Write_Str (Unit_Hed);
68 Write_Str (File_Hed);
69 Write_Str (Time_Hed);
70 Write_Eol;
71
72 Write_Str (Unit_Und);
73 Write_Str (File_Und);
74 Write_Str (Time_Und);
75 Write_Eol;
76 Write_Eol;
77 end if;
78
79 for R in Sorted_Units'Range loop
38cbfe40 80 if File_Names_Only then
8ab31c0c 81 if not Is_Internal_Unit (Sorted_Units (R)) then
38cbfe40
RK
82 Write_Name (Full_File_Name (Source_Index (Sorted_Units (R))));
83 Write_Eol;
84 end if;
85
86 else
87 Write_Unit_Name (Unit_Name (Sorted_Units (R)));
88
89 if Name_Len > (Unit_Length - 1) then
90 Write_Eol;
91 Write_Str (Unit_Bln);
92 else
93 for J in Name_Len + 1 .. Unit_Length loop
94 Write_Char (' ');
95 end loop;
96 end if;
97
98 Write_Name (Full_File_Name (Source_Index (Sorted_Units (R))));
99
100 if Name_Len > (File_Length - 1) then
101 Write_Eol;
102 Write_Str (Unit_Bln);
103 Write_Str (File_Bln);
104 else
105 for J in Name_Len + 1 .. File_Length loop
106 Write_Char (' ');
107 end loop;
108 end if;
109
110 Write_Str (String (Time_Stamp (Source_Index (Sorted_Units (R)))));
111 Write_Eol;
112 end if;
113 end loop;
114
115 Write_Eol;
116end List;