<> <> DIRECTORY AMTypes, IO, Rope; Cucumber: DEFINITIONS = BEGIN Error: ERROR [msg: Rope.ROPE]; Transfer: PROC [what: REF ANY, where: IO.STREAM, direction: Direction]; Register: SAFE PROC [handler: Handler, type: AMTypes.Type]; Handler: TYPE = REF HandlerRep; HandlerRep: TYPE = RECORD [ PartTransfer: PartTransferProc, PrepareWhole, FinishWhole: Bracket _ NIL, data: REF ANY _ NIL]; PartTransferProc: TYPE = PROC [whole: REF ANY, part: Path, where: IO.STREAM, direction: Direction, data: REF ANY]; Bracket: TYPE = PROC [whole: REF ANY, where: IO.STREAM, direction: Direction, data: REF ANY] RETURNS [leaveTheseToMe: SelectorList _ NIL]; all: SelectorList; SelectorList: TYPE = LIST OF Selector; Path: TYPE = LIST OF Selector; --outermost first Selector: TYPE = REF ANY; <> <> <> <> < --indices of ARRAYs indexed by an enumerated type >> <<]>> Direction: TYPE = {in, out}; END.