DIRECTORY FS USING [OpenFile], IO USING [STREAM], Rope USING [ROPE]; RopeFile: CEDAR DEFINITIONS = BEGIN OPEN IO, Rope; Create: PROC [ name: ROPE, start: INT _ 0, len: INT _ LAST[INT], bufSize: INT _ 512, buffers: NAT _ 4, raw: BOOL _ TRUE] RETURNS [rope: ROPE]; FromStream: PROC [ stream: STREAM, start: INT _ 0, len: INT _ LAST[INT], bufSize: INT _ 512, buffers: NAT _ 4] RETURNS [rope: ROPE]; SubstrCreate: PROC [name: ROPE, start: INT _ 0, len: INT _ LAST[INT]] RETURNS [rope: ROPE]; SimpleCreate: PROC [name: ROPE] RETURNS [rope: ROPE]; FileFromRope: PROC [rope: ROPE] RETURNS [FS.OpenFile]; AppendChars: PROC [buffer: REF TEXT, rope: ROPE, start: INT _ 0, len: INT _ LAST[INT]] RETURNS [charsMoved: NAT]; END. œRopeFile.mesa Russ Atkinson, October 28, 1983 4:59 pm Create makes a new ROPE from the specified subrope of the named file. It will open the named file, and hold a read lock on that file until the rope becomes inaccessible! If raw, then Tioga formatting will be part of the created rope. Create can raise FS.Error when attempting to open the given file. Just like Create, except that it takes an open stream as the file rather than opening a file. Equivalent to Create[name, start, len]. Equivalent to Create[name]. Returns the file (if any) used by the given rope. Appends characters from the given rope (which need not be a RopeFile rope) onto the specified buffer. The move will stop at the end of the specified subrope OR end of the rope OR the end of the buffer. It is the user's responsibility to determine if enough characters have been moved. A BoundsFault will occur if start NOT IN [0..rope.Length[]]. ʘšœ ™ Jšœ'™'—J˜šÏk ˜ Jšœœ ˜Jšœœœ˜Jšœœœ˜J˜—Jš œ œ œœœœ˜2˜šÏnœœ˜Jš œœ œ œœœ˜1Jš œ œœ œœ˜7Jšœœ˜Jšœœ—™®J˜—šž œœ˜Jš œœ œ œœœ˜5Jšœ œœ˜%Jšœœ˜Jšœ]™]J˜—šž œœœ œ œœœœœ˜[Jšœ'™'J˜—š ž œœœœœ˜5Jšœ™J˜—š ž œœœœœ ˜6J™1J˜—šž œ˜Jšœ œœœ œ œœœ˜DJšœœ˜Jš œžœœmœ!œœ™ÜJ˜—šœ˜J˜J˜———…—؈