Commit 83649257 by Pascal Obry Committed by Arnaud Charlet

prj.ads, prj.adb (For_Project_And_Aggregated_Context): New generic routine with…

prj.ads, prj.adb (For_Project_And_Aggregated_Context): New generic routine with a context parameter.

2012-02-08  Pascal Obry  <obry@adacore.com>

	* prj.ads, prj.adb (For_Project_And_Aggregated_Context): New
	generic routine with a context parameter.

From-SVN: r183998
parent a8551b5f
2012-02-08 Pascal Obry <obry@adacore.com>
* prj.ads, prj.adb (For_Project_And_Aggregated_Context): New
generic routine with a context parameter.
2012-02-08 Robert Dewar <dewar@adacore.com>
* a-coinve.adb, sem_util.adb, sem_ch8.adb, a-cobove.adb,
......
......@@ -1863,6 +1863,56 @@ package body Prj is
end if;
end For_Project_And_Aggregated;
----------------------------------------
-- For_Project_And_Aggregated_Context --
----------------------------------------
procedure For_Project_And_Aggregated_Context
(Root_Project : Project_Id;
Root_Tree : Project_Tree_Ref)
is
procedure Recursive_Process
(Project : Project_Id;
Tree : Project_Tree_Ref;
Context : Project_Context);
-- Process Project and all aggregated projects recursively
-----------------------
-- Recursive_Process --
-----------------------
procedure Recursive_Process
(Project : Project_Id;
Tree : Project_Tree_Ref;
Context : Project_Context)
is
Agg : Aggregated_Project_List;
Ctx : Project_Context;
begin
Action (Project, Tree, Context);
if Project.Qualifier in Aggregate_Project then
Ctx :=
(In_Aggregate_Lib => True,
From_Encapsulated_Lib =>
Context.From_Encapsulated_Lib
or else
Project.Standalone_Library = Encapsulated);
Agg := Project.Aggregated_Projects;
while Agg /= null loop
Recursive_Process (Agg.Project, Agg.Tree, Ctx);
Agg := Agg.Next;
end loop;
end if;
end Recursive_Process;
begin
Recursive_Process
(Root_Project, Root_Tree, Project_Context'(False, False));
end For_Project_And_Aggregated_Context;
-- Package initialization for Prj
begin
......
......@@ -1621,6 +1621,17 @@ package Prj is
With_State : in out State;
Include_Aggregated : Boolean := True;
Imported_First : Boolean := False);
-- As above but with an associated context
generic
with procedure Action
(Project : Project_Id;
Tree : Project_Tree_Ref;
Context : Project_Context);
procedure For_Project_And_Aggregated_Context
(Root_Project : Project_Id;
Root_Tree : Project_Tree_Ref);
-- As above but with an associated context
function Extend_Name
(File : File_Name_Type;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment