
with Asis.Implementation;
with Asis.Ada_Environments;

with Ada.Text_IO;
--%with Ada.Characters.Handling;
with Asis.Report;

package body Asis.Toolkit.ObjectAda.Ada_Environments is

  Debug : constant Boolean := 
     Asis.Report.Debug ( "Asis.Toolkit.ObjectAda.Ada_Environments.Debug" );

  procedure Initialize (Context : in out Asis.Context;
			Verbose : in     Boolean := False) is
  begin

   Asis.Implementation.Initialize;

   if Debug or Verbose then
     if Asis.Implementation.Is_Initialized then
        Ada.Text_IO.Put_Line (Item => "Initialize OK !");
     else
        Ada.Text_IO.Put_Line (Item => "Initialize Failed");
     end if;
   end if;

   Asis.Ada_Environments.Associate (
      The_Context => Context,
      Name        => "Default_Library");

   if Debug or Verbose then
     if Asis.Ada_Environments.Has_Associations (The_Context => Context) then
        Ada.Text_IO.Put_Line (Item => "Associate OK !");
     else
        Ada.Text_IO.Put_Line (Item => "Associate Failed");
     end if;
   end if;

   Asis.Ada_Environments.Open (The_Context => Context);

   if Debug or Verbose then
     Ada.Text_IO.Put_Line (Item => "Test Is_Open");
     if Asis.Ada_Environments.Is_Open (The_Context => Context) then
        Ada.Text_IO.Put_Line (Item => "Open OK !");
     else
        Ada.Text_IO.Put_Line (Item => "Open Failed");
     end if;
   end if;

  end Initialize;

  procedure Finalize (Context : in out Asis.Context) is
  begin

    Asis.Ada_Environments.Close (The_Context => Context);
    Asis.Ada_Environments.Dissociate (The_Context => Context);
    Asis.Implementation.Finalize;
    
  end Finalize;

end Asis.Toolkit.ObjectAda.Ada_Environments;
