1. private with Ada.Strings.Unbounded; 
  2.  
  3. package Tools.Item_Spawners is 
  4.  
  5.     type Item_Spawner is new Tool with private; 
  6.     type A_Item_Spawner is access all Item_Spawner'Class; 
  7.  
  8.     function Create_Item_Spawner( id : String ) return A_Tool; 
  9.  
  10.     function Get_ID( this : not null access Item_Spawner'Class ) return String; 
  11.  
  12. private 
  13.  
  14.     use Ada.Strings.Unbounded; 
  15.  
  16.     ---------------------------------------------------------------------------- 
  17.  
  18.     type Item_Spawner is new Tool with 
  19.         record 
  20.             id : Unbounded_String; 
  21.         end record; 
  22.  
  23.     procedure Apply( this      : access Item_Spawner; 
  24.                      func      : Function_Type; 
  25.                      modifiers : Modifiers_Array; 
  26.                      first     : Boolean; 
  27.                      world     : not null A_World; 
  28.                      worldX, 
  29.                      worldY, 
  30.                      layer     : Integer ); 
  31.  
  32.     procedure Construct( this : access Item_Spawner; id : String ); 
  33.  
  34. end Tools.Item_Spawners;