Last modified on Fri Feb 28 20:20:48 PST 1992 by stolfi modified on Thu Sep 26 20:52:22 1991 by kalsow modified on Thu Nov 2 21:55:26 1989 by muller
UNSAFE MODULE; IMPORT Word, Int32; PROCEDURE Extended Equal (a, b: T): BOOLEAN = BEGIN RETURN a = b END Equal; CONST Int32Sz = BYTESIZE(T) DIV BYTESIZE(Int32.T); TYPE Int32Arr = ARRAY [0..Int32Sz-1] OF Int32.T; PROCEDUREHash (a: T): Word.T = VAR arr := LOOPHOLE(a, Int32Arr); res := 0; BEGIN FOR i := 0 TO LAST(arr) DO res := Word.Xor(res, Int32.Hash(arr[i])) END (* FOR *); RETURN res END Hash; PROCEDURECompare (a, b: T): [-1..1] = BEGIN IF a < b THEN RETURN -1 ELSIF a > b THEN RETURN 1 ELSE RETURN 0 END (* IF *) END Compare; BEGIN END Extended.