Copyright (C) 1994, Digital Equipment Corp. GENERIC MODULESort (Elem); IMPORT Csort; VAR cp_g: CompareProc; PROCEDUREArray ( VAR (*inout*) a: ARRAY OF Elem.T; p: CompareProc) RAISES {}= BEGIN WITH n = NUMBER(a) DO IF n # 0 THEN cp_g := p; Csort.qsort(ADR(a[0]), n, BYTESIZE(Elem.T), LOOPHOLE(RefCompare, Csort.CompareProc)) END; END; END Array; PROCEDURERefCompare (rx, ry: UNTRACED REF Elem.T): INTEGER RAISES {}= BEGIN RETURN cp_g(rx^, ry^); END RefCompare; BEGIN END Sort.