-------------------------
-- External References --
-------------------------
+
-- External references influence the way a project tree is processed (in
-- particular they provide the values for the typed string variables that
-- are then used in case constructions).
+
-- External references are project-tree specific, so that when multiple
-- trees are loaded in parallel we can have different scenarios (or even
-- load the same tree twice and see different views of it).
Reset_Tree : Boolean := True;
In_Node_Tree : Prj.Tree.Project_Node_Tree_Ref := null)
is
- Project_Node : Project_Node_Id := Empty_Node;
- The_Project : Project_Id := No_Project;
- Success : Boolean := True;
- Current_Dir : constant String := Get_Current_Dir;
- Project_Node_Tree : Prj.Tree.Project_Node_Tree_Ref := In_Node_Tree;
+ Project_Node : Project_Node_Id := Empty_Node;
+ The_Project : Project_Id := No_Project;
+ Success : Boolean := True;
+ Current_Dir : constant String := Get_Current_Dir;
+ Project_Node_Tree : Prj.Tree.Project_Node_Tree_Ref := In_Node_Tree;
Automatically_Generated : Boolean;
Config_File_Path : String_Access;
+
begin
if Project_Node_Tree = null then
Project_Node_Tree := new Project_Node_Tree_Data;
-- Read the original casing of the project name
declare
- Loc : Source_Ptr := Location_Of (Project, In_Tree);
+ Loc : Source_Ptr;
+
begin
+ Loc := Location_Of (Project, In_Tree);
for J in 1 .. Name_Len loop
Name_Buffer (J) := Sinput.Source (Loc);
Loc := Loc + 1;
end if;
end if;
- Value := Prj.Ext.Value_Of
- (From_Project_Node_Tree, Name, Default);
+ Value :=
+ Prj.Ext.Value_Of (From_Project_Node_Tree, Name, Default);
if Value = No_Name then
if not Quiet_Output then
Check (In_Tree, Project, Flags);
end if;
- -- If main project is an extending all project, set the object
- -- directory of all virtual extending projects to the object
- -- directory of the main project.
+ -- If main project is an extending all project, set object directory of
+ -- all virtual extending projects to object directory of main project.
if Project /= No_Project
and then
declare
Imported : Project_List;
Declaration_Node : Project_Node_Id := Empty_Node;
- Name : constant Name_Id :=
- Name_Of
- (From_Project_Node, From_Project_Node_Tree);
- Name_Node : constant Tree_Private_Part.Project_Name_And_Node :=
- Tree_Private_Part.Projects_Htable.Get
- (From_Project_Node_Tree.Projects_HT, Name);
+
+ Name : constant Name_Id :=
+ Name_Of (From_Project_Node, From_Project_Node_Tree);
+
+ Name_Node : constant Tree_Private_Part.Project_Name_And_Node :=
+ Tree_Private_Part.Projects_Htable.Get
+ (From_Project_Node_Tree.Projects_HT, Name);
begin
Project := Processed_Projects.Get (Name);
package Tree_Private_Part is
- -- This is conceptually in the private part
- -- However, for efficiency, some packages are accessing it directly
+ -- This is conceptually in the private part. However, for efficiency,
+ -- some packages are accessing it directly.
type Project_Node_Record is record
Key => Name_Id,
Hash => Hash,
Equal => "=");
+ -- Comment required describing what this table is used for ???
type Project_Node_Tree_Data is record
Project_Nodes : Tree_Private_Part.Project_Node_Table.Instance;
-- particular when using different compilers with different default
-- search directories.
end record;
- -- The data for a project node tree
procedure Free (Proj : in out Project_Node_Tree_Ref);
-- Free memory used by Prj