<> <> <> <> DIRECTORY IO USING [STREAM, Value], Rope USING [ROPE]; LogViewer: CEDAR DEFINITIONS = BEGIN <<>> <> <> <> <> <<>> <<>> <> <> <> <> <> CreateStream: PROC [] RETURNS [stream: IO.STREAM]; <> <> <> <> PutRope: PROC [text: Rope.ROPE]; PutRopes: PROC [t1, t2, t3: Rope.ROPE_NIL]; PutF: PROC [format: Rope.ROPE _ NIL, v1, v2, v3, v4, v5: IO.Value _ [null[]]]; PutF1: PROC [format: Rope.ROPE _ NIL, value: IO.Value _ [null[]]]; <> <> <<(one that will not confuse users) clients must follow the convention below:>> <> UserAbort: SIGNAL; TimeOut: SIGNAL; RequestRope: PROC [prompt: Rope.ROPE_NIL, timeOut: NAT_0] RETURNS [Rope.ROPE]; <> <> <> <> AddLock: PRIVATE PROC [lock, free: PROC]; <> <> <> <> <> <> <> END.