OSDN Git Service

2007-08-14 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 2,  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 COPYING.  If not, write --
19 -- to  the  Free Software Foundation,  51  Franklin  Street,  Fifth  Floor, --
20 -- Boston, MA 02110-1301, USA.                                              --
21 --                                                                          --
22 -- GNAT was originally developed  by the GNAT team at  New York University. --
23 -- Extensive contributions were provided by Ada Core Technologies Inc.      --
24 --                                                                          --
25 ------------------------------------------------------------------------------
26
27 --  Implements the parsing of project files into a tree
28
29 with Prj.Tree;  use Prj.Tree;
30
31 package Prj.Part is
32
33    procedure Parse
34      (In_Tree                : Project_Node_Tree_Ref;
35       Project                : out Project_Node_Id;
36       Project_File_Name      : String;
37       Always_Errout_Finalize : Boolean;
38       Packages_To_Check      : String_List_Access := All_Packages;
39       Store_Comments         : Boolean := False);
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    type Extension_Origin is (None, Extending_Simple, Extending_All);
50    --  Type of parameter From_Extended for procedures Parse_Single_Project and
51    --  Post_Parse_Context_Clause. Extending_All means that we are parsing the
52    --  tree rooted at an extending all project.
53
54    procedure Parse_Single_Project
55      (In_Tree           : Project_Node_Tree_Ref;
56       Project           : out Project_Node_Id;
57       Extends_All       : out Boolean;
58       Path_Name         : String;
59       Extended          : Boolean;
60       From_Extended     : Extension_Origin;
61       In_Limited        : Boolean;
62       Packages_To_Check : String_List_Access;
63       Depth             : Natural);
64    --  Parse a project file.
65    --  Recursive procedure: it calls itself for imported and extended
66    --  projects. When From_Extended is not None, if the project has already
67    --  been parsed and is an extended project A, return the ultimate
68    --  (not extended) project that extends A. When In_Limited is True,
69    --  the importing path includes at least one "limited with".
70    --  When parsing configuration projects, do not allow a depth > 1.
71
72 end Prj.Part;