OSDN Git Service

2007-12-19 Gary Dismukes <dismukes@adacore.com>
[pf3gnuchains/gcc-fork.git] / gcc / ada / prj-part.ads
1 ------------------------------------------------------------------------------
2 --                                                                          --
3 --                         GNAT COMPILER COMPONENTS                         --
4 --                                                                          --
5 --                              P R J . P A R T                             --
6 --                                                                          --
7 --                                 S p e c                                  --
8 --                                                                          --
9 --          Copyright (C) 2000-2007, 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 --  Implements the parsing of project files into a tree
27
28 with Prj.Tree;  use Prj.Tree;
29
30 package Prj.Part is
31
32    procedure Parse
33      (In_Tree                : Project_Node_Tree_Ref;
34       Project                : out Project_Node_Id;
35       Project_File_Name      : String;
36       Always_Errout_Finalize : Boolean;
37       Packages_To_Check      : String_List_Access := All_Packages;
38       Store_Comments         : Boolean := False;
39       Current_Directory      : String := "");
40    --  Parse project file and all its imported project files and create a tree.
41    --  Return the node for the project (or Empty_Node if parsing failed). If
42    --  Always_Errout_Finalize is True, Errout.Finalize is called in all cases,
43    --  Otherwise, Errout.Finalize is only called if there are errors (but not
44    --  if there are only warnings). Packages_To_Check indicates the packages
45    --  where any unknown attribute produces an error. For other packages, an
46    --  unknown attribute produces a warning. When Store_Comments is True,
47    --  comments are stored in the parse tree.
48    --
49    --  Current_Directory is used for optimization purposes only, avoiding extra
50    --  system calls.
51
52    type Extension_Origin is (None, Extending_Simple, Extending_All);
53    --  Type of parameter From_Extended for procedures Parse_Single_Project and
54    --  Post_Parse_Context_Clause. Extending_All means that we are parsing the
55    --  tree rooted at an extending all project.
56
57    procedure Parse_Single_Project
58      (In_Tree           : Project_Node_Tree_Ref;
59       Project           : out Project_Node_Id;
60       Extends_All       : out Boolean;
61       Path_Name         : String;
62       Extended          : Boolean;
63       From_Extended     : Extension_Origin;
64       In_Limited        : Boolean;
65       Packages_To_Check : String_List_Access;
66       Depth             : Natural;
67       Current_Dir       : String);
68    --  Parse a project file.
69    --  Recursive procedure: it calls itself for imported and extended
70    --  projects. When From_Extended is not None, if the project has already
71    --  been parsed and is an extended project A, return the ultimate
72    --  (not extended) project that extends A. When In_Limited is True,
73    --  the importing path includes at least one "limited with".
74    --  When parsing configuration projects, do not allow a depth > 1.
75
76 end Prj.Part;