[comp.lang.modula2] Generic sort p. 2

ob@IFI.UIB.NO (Ole Bjorn Tuftedal) (04/04/91)

DEFINITION MODULE GenericSorting;
(* $SEG:=9; *)
(* Richard S. Wiener, SIGPLAN Notices, V19 #3, March 1984, pp 66-72. *)
(*    Reference:  Wiener, R.S., Sincovec, R.F., "Programming in Ada",
                                    pp 294-297, John Wiley and Sons. *)
(*
                          Richard S. Wiener,
                   Department of Computer Science,
              University of Colorado at Colorado Springs
             Colorado Springs, Colorado 80907, U S A.
*)

(* Related modules: IMPLEMENTATION MODULE GenericSorting,
                            file name GENERICS.MOD
                    MODULE      TstGenSorting;
                            file name TSTGENSO.MOD  *)

FROM SYSTEM IMPORT WORD;

EXPORT QUALIFIED (* proc *) GenericSort;

TYPE UserProc = PROCEDURE(ARRAY OF WORD, ARRAY OF WORD): BOOLEAN;
(* The client program must supply a procedure that compares
   two words of the type to be sorted. *)

PROCEDURE GenericSort(VAR ObjectArray: ARRAY OF WORD;
                          object1, object2: ARRAY OF WORD;
                          GreaterThan: UserProc); (* greater *)

(* GenericSort inputs an array of objects and returns the sorted
   array of objects.  The sorting is performed in-place, using
   blocks of word, and the result is returned to the client program's
   array of objects.
   The first, reference, parameter is an array of objects.
   The purpose of object1 and object2 is to provide workspace of the
   correct word size.
   The last parameter is a procedure parameter that enables a comparison
   to be performed between two objects of the type being sorted.
   The client program's object comparison procedure must exactly match
   the specification given, i.e. it must have two ARRAY OF WORD parameters
   and return a boolean result. *)

END GenericSorting.

Ole-Bjorn Tuftedal
University of Bergen, Norway
Internet:  tuftedal@ifi.uib.no
Bitnet:    sinot@nobergen