- type Naming_Data is record
-
- Dot_Replacement : File_Name_Type := No_File;
- -- The string to replace '.' in the source file name (for Ada)
-
- Casing : Casing_Type := All_Lower_Case;
- -- The casing of the source file name (for Ada)
-
- Spec_Suffix : Array_Element_Id := No_Array_Element;
- -- The string to append to the unit name for the
- -- source file name of a spec.
- -- Indexed by the programming language.
-
- Body_Suffix : Array_Element_Id := No_Array_Element;
- -- The string to append to the unit name for the
- -- source file name of a body.
- -- Indexed by the programming language.
-
- Separate_Suffix : File_Name_Type := No_File;
- -- String to append to unit name for source file name of an Ada subunit
-
- Specs : Array_Element_Id := No_Array_Element;
- -- An associative array mapping individual specs to source file names
- -- This is specific to unit-based languages.
-
- Bodies : Array_Element_Id := No_Array_Element;
- -- An associative array mapping individual bodies to source file names
- -- This is specific to unit-based languages.
-
- Specification_Exceptions : Array_Element_Id := No_Array_Element;
- -- An associative array listing spec file names that do not have the
- -- spec suffix. Not used by Ada. Indexed by programming language name.
-
- Implementation_Exceptions : Array_Element_Id := No_Array_Element;
- -- An associative array listing body file names that do not have the
- -- body suffix. Not used by Ada. Indexed by programming language name.
-
- end record;
-
- function Spec_Suffix_Of
- (In_Tree : Project_Tree_Ref;
- Language : String;
- Naming : Naming_Data) return String;
-
- function Spec_Suffix_Id_Of
- (In_Tree : Project_Tree_Ref;
- Language_Id : Name_Id;
- Naming : Naming_Data) return File_Name_Type;
-
- procedure Set_Spec_Suffix
- (In_Tree : Project_Tree_Ref;
- Language : String;
- Naming : in out Naming_Data;
- Suffix : File_Name_Type);
-
- function Body_Suffix_Id_Of
- (In_Tree : Project_Tree_Ref;
- Language_Id : Name_Id;
- Naming : Naming_Data) return File_Name_Type;
-
- function Body_Suffix_Of
- (In_Tree : Project_Tree_Ref;
- Language : String;
- Naming : Naming_Data) return String;
-
- procedure Set_Body_Suffix
- (In_Tree : Project_Tree_Ref;
- Language : String;
- Naming : in out Naming_Data;
- Suffix : File_Name_Type);
-
- function Standard_Naming_Data
- (Tree : Project_Tree_Ref := No_Project_Tree) return Naming_Data;
- pragma Inline (Standard_Naming_Data);
- -- The standard GNAT naming scheme when Tree is No_Project_Tree.
- -- Otherwise, return the default naming scheme for the project tree Tree,
- -- which must have been Initialized.
-
- function Same_Naming_Scheme
- (Left, Right : Naming_Data) return Boolean;
- -- Returns True if Left and Right are the same naming scheme
- -- not considering Specs and Bodies.
-
- type Project_List is new Nat;
- Empty_Project_List : constant Project_List := 0;
- -- A list of project files
-
- type Project_Element is record
+ function Get_Object_Directory
+ (Project : Project_Id;
+ Including_Libraries : Boolean;
+ Only_If_Ada : Boolean := False) return Path_Name_Type;
+ -- Return the object directory to use for the project. This depends on
+ -- whether we have a library project or a standard project. This function
+ -- might return No_Name when no directory applies.
+ -- If we have a a library project file and Including_Libraries is True then
+ -- the library dir is returned instead of the object dir.
+ -- If Only_If_Ada is True, then No_Name will be returned when the project
+ -- doesn't Ada sources.
+
+ procedure Compute_All_Imported_Projects (Tree : Project_Tree_Ref);
+ -- For all projects in the tree, compute the list of the projects imported
+ -- directly or indirectly by project Project. The result is stored in
+ -- Project.All_Imported_Projects for each project
+
+ function Ultimate_Extending_Project_Of
+ (Proj : Project_Id) return Project_Id;
+ -- Returns the ultimate extending project of project Proj. If project Proj
+ -- is not extended, returns Proj.
+
+ type Project_List_Element;
+ type Project_List is access all Project_List_Element;
+ type Project_List_Element is record