1. package Maps.Keen is 
  2.  
  3.     pragma Elaborate_Body; 
  4.  
  5. private 
  6.  
  7.     -- Keen maps have three layers and the background two layers are physical. 
  8.     type Keen_Map is new Map_Object with null record; 
  9.     type A_Keen_Map is access all Keen_Map'Class; 
  10.  
  11.     -- This constructor is called to create a new empty map. 
  12.     procedure Construct( this : access Keen_Map; width, height : Positive ); 
  13.  
  14.     function Object_Input( stream : access Root_Stream_Type'Class ) return Keen_Map; 
  15.     for Keen_Map'Input use Object_Input; 
  16.  
  17.     procedure Object_Output( stream : access Root_Stream_Type'Class; obj : Keen_Map ); 
  18.     for Keen_Map'Output use Object_Output; 
  19.  
  20.     procedure Object_Read( stream : access Root_Stream_Type'Class; obj : out Keen_Map ); 
  21.     for Keen_Map'Read use Object_Read; 
  22.  
  23.     procedure Object_Write( stream : access Root_Stream_Type'Class; obj : Keen_Map ); 
  24.     for Keen_Map'Write use Object_Write; 
  25.  
  26. end Maps.Keen;