DEFINITION MODULE QuickSortModule;

	(********************************************************)
	(*							*)
	(*	In-memory sort using the QuickSort method	*)
	(*							*)
	(*  Programmer:		P. Moylan			*)
	(*  Last edited:	4 August 1993			*)
	(*  Status:		OK				*)
	(*							*)
	(********************************************************)

FROM SYSTEM IMPORT
    (* type *)	BYTE, ADDRESS;

TYPE CompareProc = PROCEDURE (ADDRESS, ADDRESS): BOOLEAN;

    (* A "CompareProc" procedure accepts the addresses of two data	*)
    (* elements, and returns TRUE iff the first is greater than or	*)
    (* equal to the second.  It is at the caller's discretion to define	*)
    (* the meaning of "greater or equal" for his or her application.	*)

PROCEDURE QuickSort (VAR (*INOUT*) data: ARRAY OF BYTE;
				N, EltSize: CARDINAL;  GE: CompareProc);

    (* In-place sort of array data[0..N].  EltSize is the element size,	*)
    (* and GE is a user-supplied function to compare elements at two	*)
    (* specified addresses.						*)

END QuickSortModule.
