1. with Ada.Containers.Hashed_Maps; use Ada.Containers; 
  2. with Ada.Strings.Hash;           use Ada.Strings; 
  3. with Ada.Task_Identification;    use Ada.Task_Identification; 
  4. with Dynamic_Tasks;              use Dynamic_Tasks; 
  5.  
  6. package Dynamic_Tasks_Finalizer is 
  7.  
  8.    function Task_Id_Hash (Key : Task_Id) return Hash_Type is (Hash (Image (Key))); 
  9.  
  10.    package Task_Ptr_Map is new Hashed_Maps (Key_Type        => Task_Id, 
  11.                                             Element_Type    => Dynamic_Task_Ptr, 
  12.                                             Hash            => Task_Id_Hash, 
  13.                                             Equivalent_Keys => "="); 
  14.  
  15.    protected Finalizer_Deallocator is 
  16.  
  17.       procedure Register (Ptr : Dynamic_Task_Ptr); 
  18.  
  19.    private 
  20.       Running_Tasks : Task_Ptr_Map.Map; 
  21.    end Finalizer_Deallocator; 
  22.  
  23. end Dynamic_Tasks_Finalizer;