<<>> <> <> <> <<>> DIRECTORY Rope USING [ROPE], IO USING [STREAM]; Archives: CEDAR DEFINITIONS ~ BEGIN ROPE: TYPE ~ Rope.ROPE; STREAM: TYPE ~ IO.STREAM; Handle: TYPE = REF HandleRecord; OpenDirectory: PROC [directory: ROPE ¬ NIL, msg: STREAM ¬ NIL] RETURNS [h: Handle]; <> CloseDirectory: PROC [h: Handle]; ArchiveConsumer: TYPE ~ PROC[ line: ROPE ] RETURNS [ continue: BOOL ¬ TRUE ]; <> EnumerateDirectory: PROC [h: Handle, pattern: ROPE, consumer: ArchiveConsumer]; <> Parameters: TYPE = REF ParametersRecord; ParametersRecord: TYPE = RECORD [fileName: ROPE ¬ NIL]; <> GetParameters: PROC RETURNS [Parameters]; <> HandleRecord: PRIVATE TYPE = RECORD [ fileName: ROPE, msg: STREAM, lastSegCount: CARD, nSegments: CARD, starts: Starts, compressedInput: STREAM ] ¬ [NIL, NIL, 0, 0, NIL, NIL]; Starts: PRIVATE TYPE ~ REF StartSequence; StartSequence: PRIVATE TYPE ~ RECORD [ SEQUENCE len: CARD OF StartRecord ]; StartRecord: PRIVATE TYPE ~ RECORD [ keyPos, segPos: CARD, key: ROPE ]; END.