home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / gnat-2.06-src.tgz / tar.out / fsf / gnat / ada / lib-list.adb < prev    next >
Text File  |  1996-09-28  |  4KB  |  106 lines

  1. ------------------------------------------------------------------------------
  2. --                                                                          --
  3. --                         GNAT COMPILER COMPONENTS                         --
  4. --                                                                          --
  5. --                             L I B . L I S T                              --
  6. --                                                                          --
  7. --                                 B o d y                                  --
  8. --                                                                          --
  9. --                            $Revision: 1.27 $                             --
  10. --                                                                          --
  11. --           Copyright (c) 1992,1993,1994 NYU, All Rights Reserved          --
  12. --                                                                          --
  13. -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  14. -- terms of the  GNU General Public License as published  by the Free Soft- --
  15. -- ware  Foundation;  either version 2,  or (at your option) any later ver- --
  16. -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  17. -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
  18. -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
  19. -- for  more details.  You should have  received  a copy of the GNU General --
  20. -- Public License  distributed with GNAT;  see file COPYING.  If not, write --
  21. -- to the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. --
  22. --                                                                          --
  23. ------------------------------------------------------------------------------
  24.  
  25. with Output; use Output;
  26.  
  27. separate (Lib)
  28. procedure List is
  29.  
  30.    Num_Units : constant Nat := Int (Units.Last) - Int (Units.First) + 1;
  31.    --  Number of units in file table
  32.  
  33.    Sorted_Units : Unit_Ref_Table (1 .. Num_Units);
  34.    --  Table of unit numbers that we will sort
  35.  
  36.    Unit_Node : Node_Id;
  37.    --  Compilation unit node for current unit
  38.  
  39.    Unit_Hed : constant String := "Unit name                        ";
  40.    Unit_Und : constant String := "---------                        ";
  41.    Unit_Bln : constant String := "                                 ";
  42.    File_Hed : constant String := "File name                     ";
  43.    File_Und : constant String := "---------                     ";
  44.    File_Bln : constant String := "                              ";
  45.    Time_Hed : constant String := "Time stamp";
  46.    Time_Und : constant String := "----------";
  47.  
  48.    Unit_Length : constant Natural := Unit_Hed'Length;
  49.    File_Length : constant Natural := File_Hed'Length;
  50.  
  51. begin
  52.    --  First step is to make a sorted table of units
  53.  
  54.    for I in 1 .. Num_Units loop
  55.       Sorted_Units (I) := Unit_Number_Type (Int (Units.First) + I - 1);
  56.    end loop;
  57.  
  58.    Sort (Sorted_Units);
  59.  
  60.    --  Now we can generate the unit table listing
  61.  
  62.    Write_Eol;
  63.    Write_Str (Unit_Hed);
  64.    Write_Str (File_Hed);
  65.    Write_Str (Time_Hed);
  66.    Write_Eol;
  67.  
  68.    Write_Str (Unit_Und);
  69.    Write_Str (File_Und);
  70.    Write_Str (Time_Und);
  71.    Write_Eol;
  72.    Write_Eol;
  73.  
  74.    for R in Sorted_Units'Range loop
  75.       Unit_Node := Cunit (Sorted_Units (R));
  76.  
  77.       Write_Unit_Name (Unit_Name (Sorted_Units (R)));
  78.  
  79.       if Name_Len > (Unit_Length - 1) then
  80.          Write_Eol;
  81.          Write_Str (Unit_Bln);
  82.       else
  83.          for I in Name_Len + 1 .. Unit_Length loop
  84.             Write_Char (' ');
  85.          end loop;
  86.       end if;
  87.  
  88.       Write_Name (Full_File_Name (Source_Index (Sorted_Units (R))));
  89.  
  90.       if Name_Len > (File_Length - 1) then
  91.          Write_Eol;
  92.          Write_Str (Unit_Bln);
  93.          Write_Str (File_Bln);
  94.       else
  95.          for I in Name_Len + 1 .. File_Length loop
  96.             Write_Char (' ');
  97.          end loop;
  98.       end if;
  99.  
  100.       Write_Str (Time_Stamp (Source_Index (Sorted_Units (R))));
  101.       Write_Eol;
  102.    end loop;
  103.  
  104.    Write_Eol;
  105. end List;
  106.