package Tiles.Matrices is
MAX_MATRIX_SIZE : constant := 32;
type Tile_Matrix is array (Integer range <>, Integer range <>) of Integer;
type A_Tile_Matrix is access all Tile_Matrix;
function Copy( src : A_Tile_Matrix ) return A_Tile_Matrix;
pragma Postcondition( Copy'Result /= src or else src = null );
procedure Delete( m : in out A_Tile_Matrix );
pragma Postcondition( m = null );
private
function A_Tile_Matrix_Input( stream : access Root_Stream_Type'Class ) return A_Tile_Matrix;
for A_Tile_Matrix'Input use A_Tile_Matrix_Input;
procedure A_Tile_Matrix_Output( stream : access Root_Stream_Type'Class; matrix : A_Tile_Matrix );
for A_Tile_Matrix'Output use A_Tile_Matrix_Output;
procedure A_Tile_Matrix_Read( stream : access Root_Stream_Type'Class; matrix : out A_Tile_Matrix );
for A_Tile_Matrix'Read use A_Tile_Matrix_Read;
procedure A_Tile_Matrix_Write( stream : access Root_Stream_Type'Class; matrix : A_Tile_Matrix );
for A_Tile_Matrix'Write use A_Tile_Matrix_Write;
end Tiles.Matrices;