OSDN Git Service

2007-09-26 Robert Dewar <dewar@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    --  Parse project file and all its imported project files and create a tree.
40    --  Return the node for the project (or Empty_Node if parsing failed). If
41    --  Always_Errout_Finalize is True, Errout.Finalize is called in all cases,
42    --  Otherwise, Errout.Finalize is only called if there are errors (but not
43    --  if there are only warnings). Packages_To_Check indicates the packages
44    --  where any unknown attribute produces an error. For other packages, an
45    --  unknown attribute produces a warning. When Store_Comments is True,
46    --  comments are stored in the parse tree.
47
48    type Extension_Origin is (None, Extending_Simple, Extending_All);
49    --  Type of parameter From_Extended for procedures Parse_Single_Project and
50    --  Post_Parse_Context_Clause. Extending_All means that we are parsing the
51    --  tree rooted at an extending all project.
52
53    procedure Parse_Single_Project
54      (In_Tree           : Project_Node_Tree_Ref;
55       Project           : out Project_Node_Id;
56       Extends_All       : out Boolean;
57       Path_Name         : String;
58       Extended          : Boolean;
59       From_Extended     : Extension_Origin;
60       In_Limited        : Boolean;
61       Packages_To_Check : String_List_Access;
62       Depth             : Natural);
63    --  Parse a project file.
64    --  Recursive procedure: it calls itself for imported and extended
65    --  projects. When From_Extended is not None, if the project has already
66    --  been parsed and is an extended project A, return the ultimate
67    --  (not extended) project that extends A. When In_Limited is True,
68    --  the importing path includes at least one "limited with".
69    --  When parsing configuration projects, do not allow a depth > 1.
70
71 end Prj.Part;