<<>> <> <> <> <> <> DIRECTORY Basics USING [UnsafeBlock], IO USING [STREAM], Rope USING [ROPE]; RopeFile: CEDAR DEFINITIONS = BEGIN OPEN Rope; ByteSequenceObject: TYPE ~ REF ByteSequenceObjectRep; ByteSequenceObjectRep: TYPE ~ MONITORED RECORD [ <> length: [0..LAST[INT]], data: REF ANY, equal: PROC [self: ByteSequenceObject, other: ByteSequenceObject] RETURNS [BOOL], <> deactivate: PROC [self: ByteSequenceObject, final: BOOL] RETURNS [DeactivateResult], describe: PROC [self: ByteSequenceObject] RETURNS [fileName: ROPE, created: ROPE, open: BOOL], <> move: UNSAFE PROC [self: ByteSequenceObject, block: Basics.UnsafeBlock, start: INT] RETURNS [charsMoved: INT ¬ 0] ]; DeactivateResult: TYPE ~ { ok, cant, alreadyInactive }; CreateByteSequenceObject: PROC [ length: [0..LAST[INT]], data: REF ANY, equal: PROC [self: ByteSequenceObject, other: ByteSequenceObject] RETURNS [BOOL], deactivate: PROC [self: ByteSequenceObject, final: BOOL] RETURNS [DeactivateResult], describe: PROC [self: ByteSequenceObject] RETURNS [fileName: ROPE, created: ROPE, open: BOOL], move: UNSAFE PROC [self: ByteSequenceObject, block: Basics.UnsafeBlock, start: INT] RETURNS [charsMoved: INT ¬ 0]] RETURNS [ByteSequenceObject]; Error: ERROR [ec: ATOM, explanation: ROPE]; <> <<$BadStream, use of a stream that does not support IO.GetLength, IO.GetIndex, IO.SetIndex>> <<$Closed, use of a closed stream, either in FromStream or a Rope operation>> <<$MultipleUse, use of a stream for more than one rope>> FromByteSequenceObject: PROC [byteSequenceObject: ByteSequenceObject, flatten: BOOL ¬ FALSE] RETURNS [ROPE]; FromStream: PROC [stream: IO.STREAM, start: INT ¬ 0, len: INT ¬ LAST[INT], flatten: BOOL ¬ FALSE] RETURNS [rope: ROPE]; <> ByteSequenceObjectFromStream: PROC [stream: IO.STREAM] RETURNS [ByteSequenceObject]; Deactivate: PROC [rope: ROPE]; <> LimitActive: PROC [activeLimit: INT]; <> END. <> <> <> <> <> <> Create: PROC [name: ROPE, start: INT ¬ 0, len: INT ¬ LAST[INT], bufSize: INT ¬ 512, buffers: NAT ¬ 4, raw: BOOL ¬ TRUE] RETURNS [rope: ROPE]; SubstrCreate: PROC [name: ROPE, start: INT ¬ 0, len: INT ¬ LAST[INT]] RETURNS [rope: ROPE]; SimpleCreate: PROC [name: ROPE] RETURNS [rope: ROPE]; <<>> <<>> <<>>