<> <> <> <> <<>> <> <<>> DIRECTORY ; IMatrix: CEDAR DEFINITIONS ~ BEGIN <> IVector: TYPE = REF IVectorRec; IVectorRec: TYPE = RECORD [ SEQUENCE size: NAT OF NAT ]; IM: TYPE = REF IMRec; IMRec: TYPE = RECORD [ SEQUENCE size: NAT OF IVector ]; Buf: TYPE = REF BufRec; BufRec: TYPE = RECORD [ first, last: NAT _ 0, pcs: SEQUENCE size: NAT OF NAT ]; IMSeq: PUBLIC TYPE = REF IMSeqRec; IMSeqRec: TYPE = RECORD [ buf: Buf, ims: SEQUENCE size: NAT OF IM ]; <> ConformanceCheck: SIGNAL; DisallowedPath: PUBLIC SIGNAL [from, to: NAT]; Create: PROC [size: NAT] RETURNS [im: IM]; Copy: PROC [from: IM] RETURNS [to: IM]; Multiply: PROC [left, right: IM] RETURNS[result: IM]; Size: PROC [im1, im2: IM] RETURNS [size: NAT]; Equal: PROC [im1, im2: IM] RETURNS [BOOL]; ApplyProc: TYPE = PROC [i, j: NAT]; Enumerate: PROC [im: IM, p: ApplyProc]; <> CreateIMSeq: PROC [im: IM] RETURNS [imSeq: IMSeq]; InitIMSeq: PROC [imSeq: IMSeq]; UpdateIMSeq: PROC [imSeq: IMSeq, pc: NAT]; END.