with Ada.Exceptions; use Ada.Exceptions;
with Opt;
with Output; use Output;
with Prj.Err; use Prj.Err;
with Prj.Part;
with Prj.Proc;
with Prj.Tree; use Prj.Tree;
package body Prj.Pars is
procedure Parse
(In_Tree : Project_Tree_Ref;
Project : out Project_Id;
Project_File_Name : String;
Packages_To_Check : String_List_Access := All_Packages;
When_No_Sources : Error_Warning := Error)
is
Project_Node_Tree : constant Project_Node_Tree_Ref :=
new Project_Node_Tree_Data;
Project_Node : Project_Node_Id := Empty_Node;
The_Project : Project_Id := No_Project;
Success : Boolean := True;
begin
Prj.Tree.Initialize (Project_Node_Tree);
Prj.Part.Parse
(In_Tree => Project_Node_Tree,
Project => Project_Node,
Project_File_Name => Project_File_Name,
Always_Errout_Finalize => False,
Packages_To_Check => Packages_To_Check);
if Project_Node /= Empty_Node then
Prj.Proc.Process
(In_Tree => In_Tree,
Project => The_Project,
Success => Success,
From_Project_Node => Project_Node,
From_Project_Node_Tree => Project_Node_Tree,
Report_Error => null,
Follow_Links => Opt.Follow_Links,
When_No_Sources => When_No_Sources);
Prj.Err.Finalize;
if not Success then
The_Project := No_Project;
end if;
end if;
Project := The_Project;
exception
when X : others =>
Write_Line (Exception_Information (X));
Write_Str ("Exception ");
Write_Str (Exception_Name (X));
Write_Line (" raised, while processing project file");
Project := No_Project;
end Parse;
procedure Set_Verbosity (To : Verbosity) is
begin
Current_Verbosity := To;
end Set_Verbosity;
end Prj.Pars;