aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/prj-util.adb
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/ada/prj-util.adb')
-rw-r--r--gcc/ada/prj-util.adb74
1 files changed, 46 insertions, 28 deletions
diff --git a/gcc/ada/prj-util.adb b/gcc/ada/prj-util.adb
index a0709cb..054aa15 100644
--- a/gcc/ada/prj-util.adb
+++ b/gcc/ada/prj-util.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2001-2004 Free Software Foundation, Inc. --
+-- Copyright (C) 2001-2005 Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -75,6 +75,7 @@ package body Prj.Util is
function Executable_Of
(Project : Project_Id;
+ In_Tree : Project_Tree_Ref;
Main : Name_Id;
Index : Int;
Ada_Main : Boolean := True) return Name_Id
@@ -82,19 +83,21 @@ package body Prj.Util is
pragma Assert (Project /= No_Project);
The_Packages : constant Package_Id :=
- Projects.Table (Project).Decl.Packages;
+ In_Tree.Projects.Table (Project).Decl.Packages;
Builder_Package : constant Prj.Package_Id :=
Prj.Util.Value_Of
(Name => Name_Builder,
- In_Packages => The_Packages);
+ In_Packages => The_Packages,
+ In_Tree => In_Tree);
Executable : Variable_Value :=
Prj.Util.Value_Of
(Name => Main,
Index => Index,
Attribute_Or_Array_Name => Name_Executable,
- In_Package => Builder_Package);
+ In_Package => Builder_Package,
+ In_Tree => In_Tree);
Executable_Suffix : constant Variable_Value :=
Prj.Util.Value_Of
@@ -102,15 +105,16 @@ package body Prj.Util is
Index => 0,
Attribute_Or_Array_Name =>
Name_Executable_Suffix,
- In_Package => Builder_Package);
+ In_Package => Builder_Package,
+ In_Tree => In_Tree);
Body_Append : constant String := Get_Name_String
- (Projects.Table
+ (In_Tree.Projects.Table
(Project).
Naming.Ada_Body_Suffix);
Spec_Append : constant String := Get_Name_String
- (Projects.Table
+ (In_Tree.Projects.Table
(Project).
Naming.Ada_Spec_Suffix);
@@ -128,7 +132,7 @@ package body Prj.Util is
Last : Positive := Name_Len;
Naming : constant Naming_Data :=
- Projects.Table (Project).Naming;
+ In_Tree.Projects.Table (Project).Naming;
Spec_Suffix : constant String :=
Get_Name_String (Naming.Ada_Spec_Suffix);
@@ -163,7 +167,8 @@ package body Prj.Util is
(Name => Name_Find,
Index => 0,
Attribute_Or_Array_Name => Name_Executable,
- In_Package => Builder_Package);
+ In_Package => Builder_Package,
+ In_Tree => In_Tree);
end if;
end;
end if;
@@ -400,7 +405,8 @@ package body Prj.Util is
function Value_Of
(Index : Name_Id;
- In_Array : Array_Element_Id) return Name_Id
+ In_Array : Array_Element_Id;
+ In_Tree : Project_Tree_Ref) return Name_Id
is
Current : Array_Element_Id := In_Array;
Element : Array_Element;
@@ -411,7 +417,7 @@ package body Prj.Util is
return No_Name;
end if;
- Element := Array_Elements.Table (Current);
+ Element := In_Tree.Array_Elements.Table (Current);
if not Element.Index_Case_Sensitive then
Get_Name_String (Index);
@@ -420,7 +426,7 @@ package body Prj.Util is
end if;
while Current /= No_Array_Element loop
- Element := Array_Elements.Table (Current);
+ Element := In_Tree.Array_Elements.Table (Current);
if Real_Index = Element.Index then
exit when Element.Value.Kind /= Single;
@@ -437,7 +443,8 @@ package body Prj.Util is
function Value_Of
(Index : Name_Id;
Src_Index : Int := 0;
- In_Array : Array_Element_Id) return Variable_Value
+ In_Array : Array_Element_Id;
+ In_Tree : Project_Tree_Ref) return Variable_Value
is
Current : Array_Element_Id := In_Array;
Element : Array_Element;
@@ -448,7 +455,7 @@ package body Prj.Util is
return Nil_Variable_Value;
end if;
- Element := Array_Elements.Table (Current);
+ Element := In_Tree.Array_Elements.Table (Current);
if not Element.Index_Case_Sensitive then
Get_Name_String (Index);
@@ -457,7 +464,7 @@ package body Prj.Util is
end if;
while Current /= No_Array_Element loop
- Element := Array_Elements.Table (Current);
+ Element := In_Tree.Array_Elements.Table (Current);
if Real_Index = Element.Index and then
Src_Index = Element.Src_Index
@@ -475,7 +482,8 @@ package body Prj.Util is
(Name : Name_Id;
Index : Int := 0;
Attribute_Or_Array_Name : Name_Id;
- In_Package : Package_Id) return Variable_Value
+ In_Package : Package_Id;
+ In_Tree : Project_Tree_Ref) return Variable_Value
is
The_Array : Array_Element_Id;
The_Attribute : Variable_Value := Nil_Variable_Value;
@@ -488,12 +496,14 @@ package body Prj.Util is
The_Array :=
Value_Of
(Name => Attribute_Or_Array_Name,
- In_Arrays => Packages.Table (In_Package).Decl.Arrays);
+ In_Arrays => In_Tree.Packages.Table (In_Package).Decl.Arrays,
+ In_Tree => In_Tree);
The_Attribute :=
Value_Of
(Index => Name,
Src_Index => Index,
- In_Array => The_Array);
+ In_Array => The_Array,
+ In_Tree => In_Tree);
-- If there is no array element, look for a variable
@@ -501,7 +511,9 @@ package body Prj.Util is
The_Attribute :=
Value_Of
(Variable_Name => Attribute_Or_Array_Name,
- In_Variables => Packages.Table (In_Package).Decl.Attributes);
+ In_Variables => In_Tree.Packages.Table
+ (In_Package).Decl.Attributes,
+ In_Tree => In_Tree);
end if;
end if;
@@ -511,16 +523,18 @@ package body Prj.Util is
function Value_Of
(Index : Name_Id;
In_Array : Name_Id;
- In_Arrays : Array_Id) return Name_Id
+ In_Arrays : Array_Id;
+ In_Tree : Project_Tree_Ref) return Name_Id
is
Current : Array_Id := In_Arrays;
The_Array : Array_Data;
begin
while Current /= No_Array loop
- The_Array := Arrays.Table (Current);
+ The_Array := In_Tree.Arrays.Table (Current);
if The_Array.Name = In_Array then
- return Value_Of (Index, In_Array => The_Array.Value);
+ return Value_Of
+ (Index, In_Array => The_Array.Value, In_Tree => In_Tree);
else
Current := The_Array.Next;
end if;
@@ -531,14 +545,15 @@ package body Prj.Util is
function Value_Of
(Name : Name_Id;
- In_Arrays : Array_Id) return Array_Element_Id
+ In_Arrays : Array_Id;
+ In_Tree : Project_Tree_Ref) return Array_Element_Id
is
Current : Array_Id := In_Arrays;
The_Array : Array_Data;
begin
while Current /= No_Array loop
- The_Array := Arrays.Table (Current);
+ The_Array := In_Tree.Arrays.Table (Current);
if The_Array.Name = Name then
return The_Array.Value;
@@ -552,14 +567,15 @@ package body Prj.Util is
function Value_Of
(Name : Name_Id;
- In_Packages : Package_Id) return Package_Id
+ In_Packages : Package_Id;
+ In_Tree : Project_Tree_Ref) return Package_Id
is
Current : Package_Id := In_Packages;
The_Package : Package_Element;
begin
while Current /= No_Package loop
- The_Package := Packages.Table (Current);
+ The_Package := In_Tree.Packages.Table (Current);
exit when The_Package.Name /= No_Name
and then The_Package.Name = Name;
Current := The_Package.Next;
@@ -570,14 +586,16 @@ package body Prj.Util is
function Value_Of
(Variable_Name : Name_Id;
- In_Variables : Variable_Id) return Variable_Value
+ In_Variables : Variable_Id;
+ In_Tree : Project_Tree_Ref) return Variable_Value
is
Current : Variable_Id := In_Variables;
The_Variable : Variable;
begin
while Current /= No_Variable loop
- The_Variable := Variable_Elements.Table (Current);
+ The_Variable :=
+ In_Tree.Variable_Elements.Table (Current);
if Variable_Name = The_Variable.Name then
return The_Variable.Value;