File : prj-proc.ads


   1 ------------------------------------------------------------------------------
   2 --                                                                          --
   3 --                         GNAT COMPILER COMPONENTS                         --
   4 --                                                                          --
   5 --                             P R J . P R O C                              --
   6 --                                                                          --
   7 --                                 S p e c                                  --
   8 --                                                                          --
   9 --          Copyright (C) 2001-2014, 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 used to convert a project file tree (see prj-tree.ads) to
  27 --  project file data structures (see prj.ads), taking into account the
  28 --  environment (external references).
  29 
  30 with Prj.Tree;  use Prj.Tree;
  31 
  32 package Prj.Proc is
  33 
  34    type Tree_Loaded_Callback is access procedure
  35      (Node_Tree    : Project_Node_Tree_Ref;
  36       Tree         : Project_Tree_Ref;
  37       Project_Node : Project_Node_Id;
  38       Project      : Project_Id);
  39    --  Callback used after the phase 1 of the processing of each aggregated
  40    --  project to get access to project trees of aggregated projects.
  41 
  42    procedure Process_Project_Tree_Phase_1
  43      (In_Tree                : Project_Tree_Ref;
  44       Project                : out Project_Id;
  45       Packages_To_Check      : String_List_Access;
  46       Success                : out Boolean;
  47       From_Project_Node      : Project_Node_Id;
  48       From_Project_Node_Tree : Project_Node_Tree_Ref;
  49       Env                    : in out Prj.Tree.Environment;
  50       Reset_Tree             : Boolean              := True;
  51       On_New_Tree_Loaded     : Tree_Loaded_Callback := null);
  52    --  Process a project tree (ie the direct resulting of parsing a .gpr file)
  53    --  based on the current external references.
  54    --
  55    --  The result of this phase_1 is a partial project tree (Project) where
  56    --  only a few fields have been initialized (in particular the list of
  57    --  languages). These are the fields that are necessary to run gprconfig if
  58    --  needed to automatically generate a configuration file. This first phase
  59    --  of the processing does not require a configuration file.
  60    --
  61    --  When Reset_Tree is True, all the project data are removed from the
  62    --  project table before processing.
  63    --
  64    --  If specified, On_New_Tree_Loaded is called after each aggregated project
  65    --  has been processed succesfully.
  66 
  67    procedure Process_Project_Tree_Phase_2
  68      (In_Tree                : Project_Tree_Ref;
  69       Project                : Project_Id;
  70       Success                : out Boolean;
  71       From_Project_Node      : Project_Node_Id;
  72       From_Project_Node_Tree : Project_Node_Tree_Ref;
  73       Env                    : Prj.Tree.Environment);
  74    --  Perform the second phase of the processing, filling the rest of the
  75    --  project with the information extracted from the project tree. This phase
  76    --  requires that the configuration file has already been parsed (in fact
  77    --  we currently assume that the contents of the configuration file has
  78    --  been included in Project through Confgpr.Apply_Config_File). The
  79    --  parameters are the same as for phase_1, with the addition of:
  80 
  81    procedure Process
  82      (In_Tree                : Project_Tree_Ref;
  83       Project                : out Project_Id;
  84       Packages_To_Check      : String_List_Access;
  85       Success                : out Boolean;
  86       From_Project_Node      : Project_Node_Id;
  87       From_Project_Node_Tree : Project_Node_Tree_Ref;
  88       Env                    : in out Prj.Tree.Environment;
  89       Reset_Tree             : Boolean              := True;
  90       On_New_Tree_Loaded     : Tree_Loaded_Callback := null);
  91    --  Performs the two phases of the processing
  92 
  93    procedure Set_Default_Runtime_For (Language : Name_Id; Value : String);
  94    --  Set the default value for the runtime of Language. To be used for the
  95    --  value of 'Runtime(<Language>) when Runtime (<language>) is not declared.
  96 
  97 end Prj.Proc;