<> <> DIRECTORY RunReader, RunReaderExtras, TextLooks; RunReaderExtrasImpl: CEDAR PROGRAM IMPORTS RunReader EXPORTS RunReaderExtras SHARES RunReader = {OPEN RunReader, TextLooks; MergedBackwards: PUBLIC PROC [reader: Ref] RETURNS [count: Offset, looks: Looks] --RunReader.ReaderProc-- = { [count,looks] _ Backwards[reader]; WHILE reader.current=reader.first OR reader.changeLooks DO nxtCount: Offset; nxtLooks: Looks; [nxtCount,nxtLooks] _ PeekBackwards[reader ! NoMoreRuns => EXIT]; IF nxtLooks#looks THEN RETURN; count _ count+nxtCount; [,] _ Backwards[reader]; ENDLOOP }; }.