1. package Tiles.Matrices is 
  2.  
  3.     MAX_MATRIX_SIZE : constant := 32; 
  4.  
  5.     ---------------------------------------------------------------------------- 
  6.  
  7.     type Tile_Matrix is array (Integer range <>, Integer range <>) of Integer; 
  8.     type A_Tile_Matrix is access all Tile_Matrix; 
  9.  
  10.     function Copy( src : A_Tile_Matrix ) return A_Tile_Matrix; 
  11.     pragma Postcondition( Copy'Result /= src or else src = null ); 
  12.  
  13.     procedure Delete( m : in out A_Tile_Matrix ); 
  14.     pragma Postcondition( m = null ); 
  15.  
  16. private 
  17.  
  18.     function A_Tile_Matrix_Input( stream : access Root_Stream_Type'Class ) return A_Tile_Matrix; 
  19.     for A_Tile_Matrix'Input use A_Tile_Matrix_Input; 
  20.  
  21.     procedure A_Tile_Matrix_Output( stream : access Root_Stream_Type'Class; matrix : A_Tile_Matrix ); 
  22.     for A_Tile_Matrix'Output use A_Tile_Matrix_Output; 
  23.  
  24.     procedure A_Tile_Matrix_Read( stream : access Root_Stream_Type'Class; matrix : out A_Tile_Matrix ); 
  25.     for A_Tile_Matrix'Read use A_Tile_Matrix_Read; 
  26.  
  27.     procedure A_Tile_Matrix_Write( stream : access Root_Stream_Type'Class; matrix : A_Tile_Matrix ); 
  28.     for A_Tile_Matrix'Write use A_Tile_Matrix_Write; 
  29.  
  30. end Tiles.Matrices;