1 ------------------------------------------------------------------------------
3 -- GNAT COMPILER COMPONENTS --
11 -- Copyright (C) 2001 Free Software Foundation, Inc. --
13 -- GNAT is free software; you can redistribute it and/or modify it under --
14 -- terms of the GNU General Public License as published by the Free Soft- --
15 -- ware Foundation; either version 2, or (at your option) any later ver- --
16 -- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
17 -- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
18 -- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License --
19 -- for more details. You should have received a copy of the GNU General --
20 -- Public License distributed with GNAT; see file COPYING. If not, write --
21 -- to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, --
22 -- MA 02111-1307, USA. --
24 -- GNAT was originally developed by the GNAT team at New York University. --
25 -- It is now maintained by Ada Core Technologies Inc (http://www.gnat.com). --
27 ------------------------------------------------------------------------------
29 with Stringt; use Stringt;
31 package body Prj.Tree is
33 use Tree_Private_Part;
35 --------------------------------
36 -- Associative_Array_Index_Of --
37 --------------------------------
39 function Associative_Array_Index_Of
40 (Node : Project_Node_Id)
47 (Project_Nodes.Table (Node).Kind = N_Attribute_Declaration
49 Project_Nodes.Table (Node).Kind = N_Attribute_Reference));
50 return Project_Nodes.Table (Node).Value;
51 end Associative_Array_Index_Of;
53 ----------------------
54 -- Case_Insensitive --
55 ----------------------
57 function Case_Insensitive (Node : Project_Node_Id) return Boolean is
62 (Project_Nodes.Table (Node).Kind = N_Attribute_Declaration
64 Project_Nodes.Table (Node).Kind = N_Attribute_Reference));
65 return Project_Nodes.Table (Node).Case_Insensitive;
68 --------------------------------
69 -- Case_Variable_Reference_Of --
70 --------------------------------
72 function Case_Variable_Reference_Of
73 (Node : Project_Node_Id)
74 return Project_Node_Id
80 Project_Nodes.Table (Node).Kind = N_Case_Construction);
81 return Project_Nodes.Table (Node).Field1;
82 end Case_Variable_Reference_Of;
84 -----------------------
85 -- Current_Item_Node --
86 -----------------------
88 function Current_Item_Node
89 (Node : Project_Node_Id)
90 return Project_Node_Id
96 Project_Nodes.Table (Node).Kind = N_Declarative_Item);
97 return Project_Nodes.Table (Node).Field1;
98 end Current_Item_Node;
104 function Current_Term
105 (Node : Project_Node_Id)
106 return Project_Node_Id
112 Project_Nodes.Table (Node).Kind = N_Term);
113 return Project_Nodes.Table (Node).Field1;
116 --------------------------
117 -- Default_Project_Node --
118 --------------------------
120 function Default_Project_Node
121 (Of_Kind : Project_Node_Kind;
122 And_Expr_Kind : Variable_Kind := Undefined)
123 return Project_Node_Id
126 Project_Nodes.Increment_Last;
127 Project_Nodes.Table (Project_Nodes.Last) :=
129 Location => No_Location,
130 Directory => No_Name,
131 Expr_Kind => And_Expr_Kind,
132 Variables => Empty_Node,
133 Packages => Empty_Node,
134 Pkg_Id => Empty_Package,
136 Path_Name => No_Name,
138 Field1 => Empty_Node,
139 Field2 => Empty_Node,
140 Field3 => Empty_Node,
141 Case_Insensitive => False);
142 return Project_Nodes.Last;
143 end Default_Project_Node;
149 function Directory_Of (Node : Project_Node_Id) return Name_Id is
154 Project_Nodes.Table (Node).Kind = N_Project);
155 return Project_Nodes.Table (Node).Directory;
158 ------------------------
159 -- Expression_Kind_Of --
160 ------------------------
162 function Expression_Kind_Of (Node : Project_Node_Id) return Variable_Kind is
167 (Project_Nodes.Table (Node).Kind = N_Literal_String
169 Project_Nodes.Table (Node).Kind = N_Attribute_Declaration
171 Project_Nodes.Table (Node).Kind = N_Variable_Declaration
173 Project_Nodes.Table (Node).Kind = N_Typed_Variable_Declaration
175 Project_Nodes.Table (Node).Kind = N_Expression
177 Project_Nodes.Table (Node).Kind = N_Term
179 Project_Nodes.Table (Node).Kind = N_Variable_Reference
181 Project_Nodes.Table (Node).Kind = N_Attribute_Reference));
183 return Project_Nodes.Table (Node).Expr_Kind;
184 end Expression_Kind_Of;
190 function Expression_Of
191 (Node : Project_Node_Id)
192 return Project_Node_Id
198 (Project_Nodes.Table (Node).Kind = N_Attribute_Declaration
200 Project_Nodes.Table (Node).Kind = N_Typed_Variable_Declaration
202 Project_Nodes.Table (Node).Kind = N_Variable_Declaration));
204 return Project_Nodes.Table (Node).Field1;
207 ---------------------------
208 -- External_Reference_Of --
209 ---------------------------
211 function External_Reference_Of
212 (Node : Project_Node_Id)
213 return Project_Node_Id
219 Project_Nodes.Table (Node).Kind = N_External_Value);
220 return Project_Nodes.Table (Node).Field1;
221 end External_Reference_Of;
223 -------------------------
224 -- External_Default_Of --
225 -------------------------
227 function External_Default_Of
228 (Node : Project_Node_Id)
229 return Project_Node_Id
235 Project_Nodes.Table (Node).Kind = N_External_Value);
236 return Project_Nodes.Table (Node).Field2;
237 end External_Default_Of;
239 ------------------------
240 -- First_Case_Item_Of --
241 ------------------------
243 function First_Case_Item_Of
244 (Node : Project_Node_Id)
245 return Project_Node_Id
251 Project_Nodes.Table (Node).Kind = N_Case_Construction);
252 return Project_Nodes.Table (Node).Field2;
253 end First_Case_Item_Of;
255 ---------------------
256 -- First_Choice_Of --
257 ---------------------
259 function First_Choice_Of
260 (Node : Project_Node_Id)
261 return Project_Node_Id
267 Project_Nodes.Table (Node).Kind = N_Case_Item);
268 return Project_Nodes.Table (Node).Field1;
271 -------------------------------
272 -- First_Declarative_Item_Of --
273 -------------------------------
275 function First_Declarative_Item_Of
276 (Node : Project_Node_Id)
277 return Project_Node_Id
283 (Project_Nodes.Table (Node).Kind = N_Project_Declaration
285 Project_Nodes.Table (Node).Kind = N_Case_Item
287 Project_Nodes.Table (Node).Kind = N_Package_Declaration));
289 if Project_Nodes.Table (Node).Kind = N_Project_Declaration then
290 return Project_Nodes.Table (Node).Field1;
292 return Project_Nodes.Table (Node).Field2;
294 end First_Declarative_Item_Of;
296 ------------------------------
297 -- First_Expression_In_List --
298 ------------------------------
300 function First_Expression_In_List
301 (Node : Project_Node_Id)
302 return Project_Node_Id
308 Project_Nodes.Table (Node).Kind = N_Literal_String_List);
309 return Project_Nodes.Table (Node).Field1;
310 end First_Expression_In_List;
312 --------------------------
313 -- First_Literal_String --
314 --------------------------
316 function First_Literal_String
317 (Node : Project_Node_Id)
318 return Project_Node_Id
324 Project_Nodes.Table (Node).Kind = N_String_Type_Declaration);
325 return Project_Nodes.Table (Node).Field1;
326 end First_Literal_String;
328 ----------------------
329 -- First_Package_Of --
330 ----------------------
332 function First_Package_Of
333 (Node : Project_Node_Id)
334 return Package_Declaration_Id
340 Project_Nodes.Table (Node).Kind = N_Project);
341 return Project_Nodes.Table (Node).Packages;
342 end First_Package_Of;
344 --------------------------
345 -- First_String_Type_Of --
346 --------------------------
348 function First_String_Type_Of
349 (Node : Project_Node_Id)
350 return Project_Node_Id
356 Project_Nodes.Table (Node).Kind = N_Project);
357 return Project_Nodes.Table (Node).Field3;
358 end First_String_Type_Of;
365 (Node : Project_Node_Id)
366 return Project_Node_Id
372 Project_Nodes.Table (Node).Kind = N_Expression);
373 return Project_Nodes.Table (Node).Field1;
376 -----------------------
377 -- First_Variable_Of --
378 -----------------------
380 function First_Variable_Of
381 (Node : Project_Node_Id)
382 return Variable_Node_Id
388 (Project_Nodes.Table (Node).Kind = N_Project
390 Project_Nodes.Table (Node).Kind = N_Package_Declaration));
392 return Project_Nodes.Table (Node).Variables;
393 end First_Variable_Of;
395 --------------------------
396 -- First_With_Clause_Of --
397 --------------------------
399 function First_With_Clause_Of
400 (Node : Project_Node_Id)
401 return Project_Node_Id
407 Project_Nodes.Table (Node).Kind = N_Project);
408 return Project_Nodes.Table (Node).Field1;
409 end First_With_Clause_Of;
415 procedure Initialize is
417 Project_Nodes.Set_Last (Empty_Node);
418 Projects_Htable.Reset;
425 function Kind_Of (Node : Project_Node_Id) return Project_Node_Kind is
427 pragma Assert (Node /= Empty_Node);
428 return Project_Nodes.Table (Node).Kind;
435 function Location_Of (Node : Project_Node_Id) return Source_Ptr is
437 pragma Assert (Node /= Empty_Node);
438 return Project_Nodes.Table (Node).Location;
441 -------------------------
442 -- Modified_Project_Of --
443 -------------------------
445 function Modified_Project_Of
446 (Node : Project_Node_Id)
447 return Project_Node_Id
453 Project_Nodes.Table (Node).Kind = N_Project_Declaration);
454 return Project_Nodes.Table (Node).Field2;
455 end Modified_Project_Of;
457 ------------------------------
458 -- Modified_Project_Path_Of --
459 ------------------------------
461 function Modified_Project_Path_Of
462 (Node : Project_Node_Id)
469 Project_Nodes.Table (Node).Kind = N_Project);
470 return Project_Nodes.Table (Node).Value;
471 end Modified_Project_Path_Of;
477 function Name_Of (Node : Project_Node_Id) return Name_Id is
479 pragma Assert (Node /= Empty_Node);
480 return Project_Nodes.Table (Node).Name;
487 function Next_Case_Item
488 (Node : Project_Node_Id)
489 return Project_Node_Id
495 Project_Nodes.Table (Node).Kind = N_Case_Item);
496 return Project_Nodes.Table (Node).Field3;
499 ---------------------------
500 -- Next_Declarative_Item --
501 ---------------------------
503 function Next_Declarative_Item
504 (Node : Project_Node_Id)
505 return Project_Node_Id
511 Project_Nodes.Table (Node).Kind = N_Declarative_Item);
512 return Project_Nodes.Table (Node).Field2;
513 end Next_Declarative_Item;
515 -----------------------------
516 -- Next_Expression_In_List --
517 -----------------------------
519 function Next_Expression_In_List
520 (Node : Project_Node_Id)
521 return Project_Node_Id
527 Project_Nodes.Table (Node).Kind = N_Expression);
528 return Project_Nodes.Table (Node).Field2;
529 end Next_Expression_In_List;
531 -------------------------
532 -- Next_Literal_String --
533 -------------------------
535 function Next_Literal_String
536 (Node : Project_Node_Id)
537 return Project_Node_Id
543 Project_Nodes.Table (Node).Kind = N_Literal_String);
544 return Project_Nodes.Table (Node).Field1;
545 end Next_Literal_String;
547 -----------------------------
548 -- Next_Package_In_Project --
549 -----------------------------
551 function Next_Package_In_Project
552 (Node : Project_Node_Id)
553 return Project_Node_Id
559 Project_Nodes.Table (Node).Kind = N_Package_Declaration);
560 return Project_Nodes.Table (Node).Field3;
561 end Next_Package_In_Project;
563 ----------------------
564 -- Next_String_Type --
565 ----------------------
567 function Next_String_Type
568 (Node : Project_Node_Id)
569 return Project_Node_Id
575 Project_Nodes.Table (Node).Kind = N_String_Type_Declaration);
576 return Project_Nodes.Table (Node).Field2;
577 end Next_String_Type;
584 (Node : Project_Node_Id)
585 return Project_Node_Id
591 Project_Nodes.Table (Node).Kind = N_Term);
592 return Project_Nodes.Table (Node).Field2;
599 function Next_Variable
600 (Node : Project_Node_Id)
601 return Project_Node_Id
607 (Project_Nodes.Table (Node).Kind = N_Typed_Variable_Declaration
609 Project_Nodes.Table (Node).Kind = N_Variable_Declaration));
611 return Project_Nodes.Table (Node).Field3;
614 -------------------------
615 -- Next_With_Clause_Of --
616 -------------------------
618 function Next_With_Clause_Of
619 (Node : Project_Node_Id)
620 return Project_Node_Id
626 Project_Nodes.Table (Node).Kind = N_With_Clause);
627 return Project_Nodes.Table (Node).Field2;
628 end Next_With_Clause_Of;
634 function Package_Id_Of (Node : Project_Node_Id) return Package_Node_Id is
639 Project_Nodes.Table (Node).Kind = N_Package_Declaration);
640 return Project_Nodes.Table (Node).Pkg_Id;
643 ---------------------
644 -- Package_Node_Of --
645 ---------------------
647 function Package_Node_Of
648 (Node : Project_Node_Id)
649 return Project_Node_Id
655 (Project_Nodes.Table (Node).Kind = N_Variable_Reference
657 Project_Nodes.Table (Node).Kind = N_Attribute_Reference));
658 return Project_Nodes.Table (Node).Field2;
665 function Path_Name_Of (Node : Project_Node_Id) return Name_Id is
670 (Project_Nodes.Table (Node).Kind = N_Project
672 Project_Nodes.Table (Node).Kind = N_With_Clause));
673 return Project_Nodes.Table (Node).Path_Name;
676 ----------------------------
677 -- Project_Declaration_Of --
678 ----------------------------
680 function Project_Declaration_Of
681 (Node : Project_Node_Id)
682 return Project_Node_Id
688 Project_Nodes.Table (Node).Kind = N_Project);
689 return Project_Nodes.Table (Node).Field2;
690 end Project_Declaration_Of;
692 ---------------------
693 -- Project_Node_Of --
694 ---------------------
696 function Project_Node_Of
697 (Node : Project_Node_Id)
698 return Project_Node_Id
704 (Project_Nodes.Table (Node).Kind = N_With_Clause
706 Project_Nodes.Table (Node).Kind = N_Variable_Reference
708 Project_Nodes.Table (Node).Kind = N_Attribute_Reference));
709 return Project_Nodes.Table (Node).Field1;
712 -----------------------------------
713 -- Project_Of_Renamed_Package_Of --
714 -----------------------------------
716 function Project_Of_Renamed_Package_Of
717 (Node : Project_Node_Id)
718 return Project_Node_Id
724 Project_Nodes.Table (Node).Kind = N_Package_Declaration);
725 return Project_Nodes.Table (Node).Field1;
726 end Project_Of_Renamed_Package_Of;
728 ------------------------------------
729 -- Set_Associative_Array_Index_Of --
730 ------------------------------------
732 procedure Set_Associative_Array_Index_Of
733 (Node : Project_Node_Id;
740 (Project_Nodes.Table (Node).Kind = N_Attribute_Declaration
742 Project_Nodes.Table (Node).Kind = N_Attribute_Reference));
743 Project_Nodes.Table (Node).Value := To;
744 end Set_Associative_Array_Index_Of;
746 --------------------------
747 -- Set_Case_Insensitive --
748 --------------------------
750 procedure Set_Case_Insensitive
751 (Node : Project_Node_Id;
758 (Project_Nodes.Table (Node).Kind = N_Attribute_Declaration
760 Project_Nodes.Table (Node).Kind = N_Attribute_Reference));
761 Project_Nodes.Table (Node).Case_Insensitive := To;
762 end Set_Case_Insensitive;
764 ------------------------------------
765 -- Set_Case_Variable_Reference_Of --
766 ------------------------------------
768 procedure Set_Case_Variable_Reference_Of
769 (Node : Project_Node_Id;
770 To : Project_Node_Id)
776 Project_Nodes.Table (Node).Kind = N_Case_Construction);
777 Project_Nodes.Table (Node).Field1 := To;
778 end Set_Case_Variable_Reference_Of;
780 ---------------------------
781 -- Set_Current_Item_Node --
782 ---------------------------
784 procedure Set_Current_Item_Node
785 (Node : Project_Node_Id;
786 To : Project_Node_Id)
792 Project_Nodes.Table (Node).Kind = N_Declarative_Item);
793 Project_Nodes.Table (Node).Field1 := To;
794 end Set_Current_Item_Node;
796 ----------------------
797 -- Set_Current_Term --
798 ----------------------
800 procedure Set_Current_Term
801 (Node : Project_Node_Id;
802 To : Project_Node_Id)
808 Project_Nodes.Table (Node).Kind = N_Term);
809 Project_Nodes.Table (Node).Field1 := To;
810 end Set_Current_Term;
812 ----------------------
813 -- Set_Directory_Of --
814 ----------------------
816 procedure Set_Directory_Of
817 (Node : Project_Node_Id;
824 Project_Nodes.Table (Node).Kind = N_Project);
825 Project_Nodes.Table (Node).Directory := To;
826 end Set_Directory_Of;
828 ----------------------------
829 -- Set_Expression_Kind_Of --
830 ----------------------------
832 procedure Set_Expression_Kind_Of
833 (Node : Project_Node_Id;
840 (Project_Nodes.Table (Node).Kind = N_Literal_String
842 Project_Nodes.Table (Node).Kind = N_Attribute_Declaration
844 Project_Nodes.Table (Node).Kind = N_Variable_Declaration
846 Project_Nodes.Table (Node).Kind = N_Typed_Variable_Declaration
848 Project_Nodes.Table (Node).Kind = N_Expression
850 Project_Nodes.Table (Node).Kind = N_Term
852 Project_Nodes.Table (Node).Kind = N_Variable_Reference
854 Project_Nodes.Table (Node).Kind = N_Attribute_Reference));
855 Project_Nodes.Table (Node).Expr_Kind := To;
856 end Set_Expression_Kind_Of;
858 -----------------------
859 -- Set_Expression_Of --
860 -----------------------
862 procedure Set_Expression_Of
863 (Node : Project_Node_Id;
864 To : Project_Node_Id)
870 (Project_Nodes.Table (Node).Kind = N_Attribute_Declaration
872 Project_Nodes.Table (Node).Kind = N_Typed_Variable_Declaration
874 Project_Nodes.Table (Node).Kind = N_Variable_Declaration));
875 Project_Nodes.Table (Node).Field1 := To;
876 end Set_Expression_Of;
878 -------------------------------
879 -- Set_External_Reference_Of --
880 -------------------------------
882 procedure Set_External_Reference_Of
883 (Node : Project_Node_Id;
884 To : Project_Node_Id)
890 Project_Nodes.Table (Node).Kind = N_External_Value);
891 Project_Nodes.Table (Node).Field1 := To;
892 end Set_External_Reference_Of;
894 -----------------------------
895 -- Set_External_Default_Of --
896 -----------------------------
898 procedure Set_External_Default_Of
899 (Node : Project_Node_Id;
900 To : Project_Node_Id)
906 Project_Nodes.Table (Node).Kind = N_External_Value);
907 Project_Nodes.Table (Node).Field2 := To;
908 end Set_External_Default_Of;
910 ----------------------------
911 -- Set_First_Case_Item_Of --
912 ----------------------------
914 procedure Set_First_Case_Item_Of
915 (Node : Project_Node_Id;
916 To : Project_Node_Id)
922 Project_Nodes.Table (Node).Kind = N_Case_Construction);
923 Project_Nodes.Table (Node).Field2 := To;
924 end Set_First_Case_Item_Of;
926 -------------------------
927 -- Set_First_Choice_Of --
928 -------------------------
930 procedure Set_First_Choice_Of
931 (Node : Project_Node_Id;
932 To : Project_Node_Id)
938 Project_Nodes.Table (Node).Kind = N_Case_Item);
939 Project_Nodes.Table (Node).Field1 := To;
940 end Set_First_Choice_Of;
942 ------------------------
943 -- Set_Next_Case_Item --
944 ------------------------
946 procedure Set_Next_Case_Item
947 (Node : Project_Node_Id;
948 To : Project_Node_Id)
954 Project_Nodes.Table (Node).Kind = N_Case_Item);
955 Project_Nodes.Table (Node).Field3 := To;
956 end Set_Next_Case_Item;
958 -----------------------------------
959 -- Set_First_Declarative_Item_Of --
960 -----------------------------------
962 procedure Set_First_Declarative_Item_Of
963 (Node : Project_Node_Id;
964 To : Project_Node_Id)
970 (Project_Nodes.Table (Node).Kind = N_Project_Declaration
972 Project_Nodes.Table (Node).Kind = N_Case_Item
974 Project_Nodes.Table (Node).Kind = N_Package_Declaration));
976 if Project_Nodes.Table (Node).Kind = N_Project_Declaration then
977 Project_Nodes.Table (Node).Field1 := To;
979 Project_Nodes.Table (Node).Field2 := To;
981 end Set_First_Declarative_Item_Of;
983 ----------------------------------
984 -- Set_First_Expression_In_List --
985 ----------------------------------
987 procedure Set_First_Expression_In_List
988 (Node : Project_Node_Id;
989 To : Project_Node_Id)
995 Project_Nodes.Table (Node).Kind = N_Literal_String_List);
996 Project_Nodes.Table (Node).Field1 := To;
997 end Set_First_Expression_In_List;
999 ------------------------------
1000 -- Set_First_Literal_String --
1001 ------------------------------
1003 procedure Set_First_Literal_String
1004 (Node : Project_Node_Id;
1005 To : Project_Node_Id)
1011 Project_Nodes.Table (Node).Kind = N_String_Type_Declaration);
1012 Project_Nodes.Table (Node).Field1 := To;
1013 end Set_First_Literal_String;
1015 --------------------------
1016 -- Set_First_Package_Of --
1017 --------------------------
1019 procedure Set_First_Package_Of
1020 (Node : Project_Node_Id;
1021 To : Package_Declaration_Id)
1027 Project_Nodes.Table (Node).Kind = N_Project);
1028 Project_Nodes.Table (Node).Packages := To;
1029 end Set_First_Package_Of;
1031 ------------------------------
1032 -- Set_First_String_Type_Of --
1033 ------------------------------
1035 procedure Set_First_String_Type_Of
1036 (Node : Project_Node_Id;
1037 To : Project_Node_Id)
1043 Project_Nodes.Table (Node).Kind = N_Project);
1044 Project_Nodes.Table (Node).Field3 := To;
1045 end Set_First_String_Type_Of;
1047 --------------------
1048 -- Set_First_Term --
1049 --------------------
1051 procedure Set_First_Term
1052 (Node : Project_Node_Id;
1053 To : Project_Node_Id)
1059 Project_Nodes.Table (Node).Kind = N_Expression);
1060 Project_Nodes.Table (Node).Field1 := To;
1063 ---------------------------
1064 -- Set_First_Variable_Of --
1065 ---------------------------
1067 procedure Set_First_Variable_Of
1068 (Node : Project_Node_Id;
1069 To : Variable_Node_Id)
1075 (Project_Nodes.Table (Node).Kind = N_Project
1077 Project_Nodes.Table (Node).Kind = N_Package_Declaration));
1078 Project_Nodes.Table (Node).Variables := To;
1079 end Set_First_Variable_Of;
1081 ------------------------------
1082 -- Set_First_With_Clause_Of --
1083 ------------------------------
1085 procedure Set_First_With_Clause_Of
1086 (Node : Project_Node_Id;
1087 To : Project_Node_Id)
1093 Project_Nodes.Table (Node).Kind = N_Project);
1094 Project_Nodes.Table (Node).Field1 := To;
1095 end Set_First_With_Clause_Of;
1101 procedure Set_Kind_Of
1102 (Node : Project_Node_Id;
1103 To : Project_Node_Kind)
1106 pragma Assert (Node /= Empty_Node);
1107 Project_Nodes.Table (Node).Kind := To;
1110 ---------------------
1111 -- Set_Location_Of --
1112 ---------------------
1114 procedure Set_Location_Of
1115 (Node : Project_Node_Id;
1119 pragma Assert (Node /= Empty_Node);
1120 Project_Nodes.Table (Node).Location := To;
1121 end Set_Location_Of;
1123 -----------------------------
1124 -- Set_Modified_Project_Of --
1125 -----------------------------
1127 procedure Set_Modified_Project_Of
1128 (Node : Project_Node_Id;
1129 To : Project_Node_Id)
1135 Project_Nodes.Table (Node).Kind = N_Project_Declaration);
1136 Project_Nodes.Table (Node).Field2 := To;
1137 end Set_Modified_Project_Of;
1139 ----------------------------------
1140 -- Set_Modified_Project_Path_Of --
1141 ----------------------------------
1143 procedure Set_Modified_Project_Path_Of
1144 (Node : Project_Node_Id;
1151 Project_Nodes.Table (Node).Kind = N_Project);
1152 Project_Nodes.Table (Node).Value := To;
1153 end Set_Modified_Project_Path_Of;
1159 procedure Set_Name_Of
1160 (Node : Project_Node_Id;
1164 pragma Assert (Node /= Empty_Node);
1165 Project_Nodes.Table (Node).Name := To;
1168 -------------------------------
1169 -- Set_Next_Declarative_Item --
1170 -------------------------------
1172 procedure Set_Next_Declarative_Item
1173 (Node : Project_Node_Id;
1174 To : Project_Node_Id)
1180 Project_Nodes.Table (Node).Kind = N_Declarative_Item);
1181 Project_Nodes.Table (Node).Field2 := To;
1182 end Set_Next_Declarative_Item;
1184 ---------------------------------
1185 -- Set_Next_Expression_In_List --
1186 ---------------------------------
1188 procedure Set_Next_Expression_In_List
1189 (Node : Project_Node_Id;
1190 To : Project_Node_Id)
1196 Project_Nodes.Table (Node).Kind = N_Expression);
1197 Project_Nodes.Table (Node).Field2 := To;
1198 end Set_Next_Expression_In_List;
1200 -----------------------------
1201 -- Set_Next_Literal_String --
1202 -----------------------------
1204 procedure Set_Next_Literal_String
1205 (Node : Project_Node_Id;
1206 To : Project_Node_Id)
1212 Project_Nodes.Table (Node).Kind = N_Literal_String);
1213 Project_Nodes.Table (Node).Field1 := To;
1214 end Set_Next_Literal_String;
1216 ---------------------------------
1217 -- Set_Next_Package_In_Project --
1218 ---------------------------------
1220 procedure Set_Next_Package_In_Project
1221 (Node : Project_Node_Id;
1222 To : Project_Node_Id)
1228 Project_Nodes.Table (Node).Kind = N_Package_Declaration);
1229 Project_Nodes.Table (Node).Field3 := To;
1230 end Set_Next_Package_In_Project;
1232 --------------------------
1233 -- Set_Next_String_Type --
1234 --------------------------
1236 procedure Set_Next_String_Type
1237 (Node : Project_Node_Id;
1238 To : Project_Node_Id)
1244 Project_Nodes.Table (Node).Kind = N_String_Type_Declaration);
1245 Project_Nodes.Table (Node).Field2 := To;
1246 end Set_Next_String_Type;
1252 procedure Set_Next_Term
1253 (Node : Project_Node_Id;
1254 To : Project_Node_Id)
1260 Project_Nodes.Table (Node).Kind = N_Term);
1261 Project_Nodes.Table (Node).Field2 := To;
1264 -----------------------
1265 -- Set_Next_Variable --
1266 -----------------------
1268 procedure Set_Next_Variable
1269 (Node : Project_Node_Id;
1270 To : Project_Node_Id)
1276 (Project_Nodes.Table (Node).Kind = N_Typed_Variable_Declaration
1278 Project_Nodes.Table (Node).Kind = N_Variable_Declaration));
1279 Project_Nodes.Table (Node).Field3 := To;
1280 end Set_Next_Variable;
1282 -----------------------------
1283 -- Set_Next_With_Clause_Of --
1284 -----------------------------
1286 procedure Set_Next_With_Clause_Of
1287 (Node : Project_Node_Id;
1288 To : Project_Node_Id)
1294 Project_Nodes.Table (Node).Kind = N_With_Clause);
1295 Project_Nodes.Table (Node).Field2 := To;
1296 end Set_Next_With_Clause_Of;
1298 -----------------------
1299 -- Set_Package_Id_Of --
1300 -----------------------
1302 procedure Set_Package_Id_Of
1303 (Node : Project_Node_Id;
1304 To : Package_Node_Id)
1310 Project_Nodes.Table (Node).Kind = N_Package_Declaration);
1311 Project_Nodes.Table (Node).Pkg_Id := To;
1312 end Set_Package_Id_Of;
1314 -------------------------
1315 -- Set_Package_Node_Of --
1316 -------------------------
1318 procedure Set_Package_Node_Of
1319 (Node : Project_Node_Id;
1320 To : Project_Node_Id)
1326 (Project_Nodes.Table (Node).Kind = N_Variable_Reference
1328 Project_Nodes.Table (Node).Kind = N_Attribute_Reference));
1329 Project_Nodes.Table (Node).Field2 := To;
1330 end Set_Package_Node_Of;
1332 ----------------------
1333 -- Set_Path_Name_Of --
1334 ----------------------
1336 procedure Set_Path_Name_Of
1337 (Node : Project_Node_Id;
1344 (Project_Nodes.Table (Node).Kind = N_Project
1346 Project_Nodes.Table (Node).Kind = N_With_Clause));
1347 Project_Nodes.Table (Node).Path_Name := To;
1348 end Set_Path_Name_Of;
1350 --------------------------------
1351 -- Set_Project_Declaration_Of --
1352 --------------------------------
1354 procedure Set_Project_Declaration_Of
1355 (Node : Project_Node_Id;
1356 To : Project_Node_Id)
1362 Project_Nodes.Table (Node).Kind = N_Project);
1363 Project_Nodes.Table (Node).Field2 := To;
1364 end Set_Project_Declaration_Of;
1366 -------------------------
1367 -- Set_Project_Node_Of --
1368 -------------------------
1370 procedure Set_Project_Node_Of
1371 (Node : Project_Node_Id;
1372 To : Project_Node_Id)
1378 (Project_Nodes.Table (Node).Kind = N_With_Clause
1380 Project_Nodes.Table (Node).Kind = N_Variable_Reference
1382 Project_Nodes.Table (Node).Kind = N_Attribute_Reference));
1383 Project_Nodes.Table (Node).Field1 := To;
1384 end Set_Project_Node_Of;
1386 ---------------------------------------
1387 -- Set_Project_Of_Renamed_Package_Of --
1388 ---------------------------------------
1390 procedure Set_Project_Of_Renamed_Package_Of
1391 (Node : Project_Node_Id;
1392 To : Project_Node_Id)
1398 Project_Nodes.Table (Node).Kind = N_Package_Declaration);
1399 Project_Nodes.Table (Node).Field1 := To;
1400 end Set_Project_Of_Renamed_Package_Of;
1402 ------------------------
1403 -- Set_String_Type_Of --
1404 ------------------------
1406 procedure Set_String_Type_Of
1407 (Node : Project_Node_Id;
1408 To : Project_Node_Id)
1414 (Project_Nodes.Table (Node).Kind = N_Variable_Reference
1416 Project_Nodes.Table (Node).Kind = N_Typed_Variable_Declaration)
1418 Project_Nodes.Table (To).Kind = N_String_Type_Declaration);
1420 if Project_Nodes.Table (Node).Kind = N_Variable_Reference then
1421 Project_Nodes.Table (Node).Field3 := To;
1423 Project_Nodes.Table (Node).Field2 := To;
1425 end Set_String_Type_Of;
1427 -------------------------
1428 -- Set_String_Value_Of --
1429 -------------------------
1431 procedure Set_String_Value_Of
1432 (Node : Project_Node_Id;
1439 (Project_Nodes.Table (Node).Kind = N_With_Clause
1441 Project_Nodes.Table (Node).Kind = N_Literal_String));
1442 Project_Nodes.Table (Node).Value := To;
1443 end Set_String_Value_Of;
1445 --------------------
1446 -- String_Type_Of --
1447 --------------------
1449 function String_Type_Of (Node : Project_Node_Id)
1450 return Project_Node_Id is
1455 (Project_Nodes.Table (Node).Kind = N_Variable_Reference
1457 Project_Nodes.Table (Node).Kind = N_Typed_Variable_Declaration));
1459 if Project_Nodes.Table (Node).Kind = N_Variable_Reference then
1460 return Project_Nodes.Table (Node).Field3;
1462 return Project_Nodes.Table (Node).Field2;
1466 ---------------------
1467 -- String_Value_Of --
1468 ---------------------
1470 function String_Value_Of (Node : Project_Node_Id) return String_Id is
1475 (Project_Nodes.Table (Node).Kind = N_With_Clause
1477 Project_Nodes.Table (Node).Kind = N_Literal_String));
1478 return Project_Nodes.Table (Node).Value;
1479 end String_Value_Of;
1481 --------------------
1482 -- Value_Is_Valid --
1483 --------------------
1485 function Value_Is_Valid
1486 (For_Typed_Variable : Project_Node_Id;
1492 (For_Typed_Variable /= Empty_Node
1494 (Project_Nodes.Table (For_Typed_Variable).Kind =
1495 N_Typed_Variable_Declaration));
1498 Current_String : Project_Node_Id :=
1499 First_Literal_String
1500 (String_Type_Of (For_Typed_Variable));
1503 while Current_String /= Empty_Node
1505 not String_Equal (String_Value_Of (Current_String), Value)
1508 Next_Literal_String (Current_String);
1511 return Current_String /= Empty_Node;