| 1 | 706 | jeremybenn | ------------------------------------------------------------------------------
 | 
      
         | 2 |  |  | --                                                                          --
 | 
      
         | 3 |  |  | --                         GNAT COMPILER COMPONENTS                         --
 | 
      
         | 4 |  |  | --                                                                          --
 | 
      
         | 5 |  |  | --                               P R J . P P                                --
 | 
      
         | 6 |  |  | --                                                                          --
 | 
      
         | 7 |  |  | --                                 S p e c                                  --
 | 
      
         | 8 |  |  | --                                                                          --
 | 
      
         | 9 |  |  | --          Copyright (C) 2001-2011, Free Software Foundation, Inc.         --
 | 
      
         | 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- --
 | 
      
         | 13 |  |  | -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
 | 
      
         | 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 --
 | 
      
         | 16 |  |  | -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
 | 
      
         | 17 |  |  | -- for  more details.  You should have  received  a copy of the GNU General --
 | 
      
         | 18 |  |  | -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
 | 
      
         | 19 |  |  | -- http://www.gnu.org/licenses for a complete copy of the license.          --
 | 
      
         | 20 |  |  | --                                                                          --
 | 
      
         | 21 |  |  | -- GNAT was originally developed  by the GNAT team at  New York University. --
 | 
      
         | 22 |  |  | -- Extensive contributions were provided by Ada Core Technologies Inc.      --
 | 
      
         | 23 |  |  | --                                                                          --
 | 
      
         | 24 |  |  | ------------------------------------------------------------------------------
 | 
      
         | 25 |  |  |  
 | 
      
         | 26 |  |  | --  This package is the Project File Pretty Printer
 | 
      
         | 27 |  |  |  
 | 
      
         | 28 |  |  | --    Used to output a project file from a project file tree.
 | 
      
         | 29 |  |  | --    Used by gnatname to update or create project files.
 | 
      
         | 30 |  |  | --    Also used GPS to display project file trees.
 | 
      
         | 31 |  |  | --    Also be used for debugging tools that create project file trees.
 | 
      
         | 32 |  |  |  
 | 
      
         | 33 |  |  | with Prj.Tree;
 | 
      
         | 34 |  |  |  
 | 
      
         | 35 |  |  | package Prj.PP is
 | 
      
         | 36 |  |  |  
 | 
      
         | 37 |  |  |    --  The following access to procedure types are used to redirect output when
 | 
      
         | 38 |  |  |    --  calling Pretty_Print.
 | 
      
         | 39 |  |  |  
 | 
      
         | 40 |  |  |    type Write_Char_Ap is access procedure (C : Character);
 | 
      
         | 41 |  |  |  
 | 
      
         | 42 |  |  |    type Write_Eol_Ap  is access procedure;
 | 
      
         | 43 |  |  |  
 | 
      
         | 44 |  |  |    type Write_Str_Ap is access procedure (S : String);
 | 
      
         | 45 |  |  |  
 | 
      
         | 46 |  |  |    subtype Max_Length_Of_Line is Positive range 50 .. 255;
 | 
      
         | 47 |  |  |  
 | 
      
         | 48 |  |  |    procedure Pretty_Print
 | 
      
         | 49 |  |  |      (Project                            : Prj.Tree.Project_Node_Id;
 | 
      
         | 50 |  |  |       In_Tree                            : Prj.Tree.Project_Node_Tree_Ref;
 | 
      
         | 51 |  |  |       Increment                          : Positive       := 3;
 | 
      
         | 52 |  |  |       Eliminate_Empty_Case_Constructions : Boolean        := False;
 | 
      
         | 53 |  |  |       Minimize_Empty_Lines               : Boolean        := False;
 | 
      
         | 54 |  |  |       W_Char                             : Write_Char_Ap  := null;
 | 
      
         | 55 |  |  |       W_Eol                              : Write_Eol_Ap   := null;
 | 
      
         | 56 |  |  |       W_Str                              : Write_Str_Ap   := null;
 | 
      
         | 57 |  |  |       Backward_Compatibility             : Boolean;
 | 
      
         | 58 |  |  |       Id                                 : Prj.Project_Id := Prj.No_Project;
 | 
      
         | 59 |  |  |       Max_Line_Length                    : Max_Length_Of_Line :=
 | 
      
         | 60 |  |  |                                              Max_Length_Of_Line'Last);
 | 
      
         | 61 |  |  |    --  Output a project file, using either the default output routines, or the
 | 
      
         | 62 |  |  |    --  ones specified by W_Char, W_Eol and W_Str.
 | 
      
         | 63 |  |  |    --
 | 
      
         | 64 |  |  |    --  Increment is the number of spaces for each indentation level
 | 
      
         | 65 |  |  |    --
 | 
      
         | 66 |  |  |    --  W_Char, W_Eol and W_Str can be used to change the default output
 | 
      
         | 67 |  |  |    --  procedures. The default values force the output to Standard_Output.
 | 
      
         | 68 |  |  |    --
 | 
      
         | 69 |  |  |    --  If Eliminate_Empty_Case_Constructions is True, then case constructions
 | 
      
         | 70 |  |  |    --  and case items that do not include any declarations will not be output.
 | 
      
         | 71 |  |  |    --
 | 
      
         | 72 |  |  |    --  If Minimize_Empty_Lines is True, empty lines will be output only after
 | 
      
         | 73 |  |  |    --  the last with clause, after the line declaring the project name, after
 | 
      
         | 74 |  |  |    --  the last declarative item of the project and before each package
 | 
      
         | 75 |  |  |    --  declaration. Otherwise, more empty lines are output.
 | 
      
         | 76 |  |  |    --
 | 
      
         | 77 |  |  |    --  If Backward_Compatibility is True, then new attributes (Spec,
 | 
      
         | 78 |  |  |    --  Spec_Suffix, Body, Body_Suffix) will be replaced by obsolete ones
 | 
      
         | 79 |  |  |    --  (Specification, Specification_Suffix, Implementation,
 | 
      
         | 80 |  |  |    --  Implementation_Suffix).
 | 
      
         | 81 |  |  |    --
 | 
      
         | 82 |  |  |    --  Id is used to compute the display name of the project including its
 | 
      
         | 83 |  |  |    --  proper casing.
 | 
      
         | 84 |  |  |    --
 | 
      
         | 85 |  |  |    --  Max_Line_Length is the maximum line length in the project file
 | 
      
         | 86 |  |  |  
 | 
      
         | 87 |  |  | private
 | 
      
         | 88 |  |  |  
 | 
      
         | 89 |  |  |    procedure Output_Statistics;
 | 
      
         | 90 |  |  |    --  This procedure can be used after one or more calls to Pretty_Print to
 | 
      
         | 91 |  |  |    --  display what Project_Node_Kinds have not been exercised by the call(s)
 | 
      
         | 92 |  |  |    --  to Pretty_Print. It is used only for testing purposes.
 | 
      
         | 93 |  |  |  
 | 
      
         | 94 |  |  |    procedure wpr
 | 
      
         | 95 |  |  |      (Project : Prj.Tree.Project_Node_Id;
 | 
      
         | 96 |  |  |       In_Tree : Prj.Tree.Project_Node_Tree_Ref);
 | 
      
         | 97 |  |  |    --  Wrapper for use from gdb: call Pretty_Print with default parameters
 | 
      
         | 98 |  |  |  
 | 
      
         | 99 |  |  | end Prj.PP;
 |