1. package Tiles.Keen is 
  2.  
  3.     pragma Elaborate_Body; 
  4.  
  5. private 
  6.  
  7.     type Action_Type is (NONE, HAZZARD, POLE, WATER, END_LEVEL, ENTER_LEVEL); 
  8.  
  9.     type Keen_Tile is new Tile_Object with 
  10.         record 
  11.             action : Action_Type := NONE; 
  12.         end record; 
  13.  
  14.     procedure Set_Attribute( this  : in out Keen_Tile; 
  15.                              found : out Boolean; 
  16.                              name  : String; 
  17.                              val   : String := "" ); 
  18.     pragma Precondition( name'Length > 0 ); 
  19.  
  20.     function Object_Input( stream : access Root_Stream_Type'Class ) return Keen_Tile; 
  21.     for Keen_Tile'Input use Object_Input; 
  22.  
  23.     procedure Object_Output( stream : access Root_Stream_Type'Class; obj : Keen_Tile ); 
  24.     for Keen_Tile'Output use Object_Output; 
  25.  
  26.     procedure Object_Read( stream : access Root_Stream_Type'Class; obj : out Keen_Tile ); 
  27.     for Keen_Tile'Read use Object_Read; 
  28.  
  29.     procedure Object_Write( stream : access Root_Stream_Type'Class; obj : Keen_Tile ); 
  30.     for Keen_Tile'Write use Object_Write; 
  31.  
  32. end Tiles.Keen;