DEFINITION MODULE MatCopy;
(*******************************************************************
Module MatCopy (Version 1.0)
Copyright (c) 1990-2006 by Olivier Roth, Andreas Fischlin and
ETH Zurich.
Purpose Basic procedures for copying matrix parts
or whole matrices to other matrices.
Remarks This module is part of the Mat-library, which forms
part of the RAMSES package.
Programming
o Design
Olivier Roth 23/04/1990
o Implementation
Olivier Roth 24/04/1990
Andreas Fischlin 28/05/1993
ETH Zurich
Systems Ecology
CHN E 35.1
Universitaetstrasse 16
8092 Zurich
SWITZERLAND
URLs:
<mailto:RAMSES@env.ethz.ch>
<http://www.sysecol.ethz.ch>
<http://www.sysecol.ethz.ch/SimSoftware/RAMSES>
Last revision of definition: 03/07/2006 AF
*******************************************************************)
FROM SYSTEM IMPORT BYTE;
FROM Matrices IMPORT Matrix, Cell, Selection;
VAR
selOneOne : Selection; (* read only ! *)
(* A predefined selection, which denotes the topmost and topleft cell
* of a matrix, i.e. its first element. *)
PROCEDURE AssignMatrix(VAR myMatrix: ARRAY OF BYTE; m,n: INTEGER;
VAR mat: Matrix);
(*
Assign the data structure myMatrix of type ARRAY [1..m,1..n] OF
REAL, i.e. myMatrix is a m by n matrix with m rows and n
columns, to the variable mat of opaque type Matrix. In case the
matrix mat has not been declared yet, AssignMatrix will do it
implicitely. myMatrix is VAR parameter only for speed-up
reasons.
*)
PROCEDURE RetrieveMatrix(mat: Matrix;
VAR myMatrix: ARRAY OF BYTE; m,n: INTEGER);
(*
Retrieves from the variable mat of opaque type Matrix the data
structure myMatrix of type ARRAY [1..m,1..n] OF REAL, i.e. myMatrix
is a m by n matrix with m rows and n columns.
*)
PROCEDURE CopyMatrix( a: Matrix; VAR b: Matrix );
(* Copies the complete matrix a to matrix b. In case that matrix b
* was not declared yet CopyMatrix implicitely declares the variable.
* If the matrix b already existed its dimensions will be adjusted *)
PROCEDURE SelWholeMat( m: Matrix; VAR sel: Selection );
(* returns the complete matrix "m" selected *)
PROCEDURE CopySelection( sourceMat: Matrix; area: Selection;
destMat : Matrix; topLeft: Cell );
PROCEDURE SwapSelections( mat1: Matrix; area: Selection;
mat2: Matrix; topLeft: Cell );
PROCEDURE SwapRows( mat1: Matrix; row1: INTEGER;
mat2: Matrix; row2: INTEGER );
PROCEDURE SwapCols( mat1: Matrix; col1: INTEGER;
mat2: Matrix; col2: INTEGER );
PROCEDURE FillDown ( mat: Matrix; area: Selection );
PROCEDURE FillRight( mat: Matrix; area: Selection );
END MatCopy.