DIRECTORY Rope, RopeEdit, IO, TextNode; InterFile: CEDAR DEFINITIONS = BEGIN Ref: TYPE = TextNode.Ref; ROPE: TYPE = Rope.ROPE; Offset: TYPE = TextNode.Offset; MaxLen: Offset = LAST[Offset]; ToFile: PROC [fileName: ROPE, node: Ref, start: Offset _ 0, flatten: BOOL _ TRUE] RETURNS [count: Offset]; FromFile: PROC [fileName: ROPE, start: Offset _ 0, len: Offset _ MaxLen] RETURNS [Ref]; FromFileError: ERROR; ToRope: PROC [node: Ref, flatten: BOOL _ TRUE] RETURNS [ROPE]; FromRope: PROC [rope: ROPE, start: Offset _ 0, len: Offset _ MaxLen] RETURNS [Ref]; ToStream: PROC [stream: IO.STREAM, node: Ref, flatten: BOOL _ TRUE] RETURNS [count: Offset]; FromStream: PROC [stream: IO.STREAM, len: Offset _ MaxLen] RETURNS [Ref]; StartPutFile: PROC; StartGetFile: PROC; END. ¦InterFile.mesa, for reading and writing Tioga files in (pseudo) InterDoc format written by Bill Paxton, May 1981 last edit by McGregor, June 10, 1982 4:43 pm Russ Atkinson, July 22, 1983 10:30 am **** File Input/Output -- write the node on the specified file -- starts writing at given address in file -- returns the number of bytes written -- create node from the contents of a file -- starts reading at given start address in file -- pretends that start+len is the end of the file -- if file was not created by ToFile -- then returns a single node containing contents of the file **** Input/Output using ropes instead of files -- resulting rope contains same representation of node as would be put on file -- reads rope to construct node **** IO Operations **** -- does a series of IO.PutBlock's -- returns number of bytes written -- reads up to len chars from stream (via GetBlock's) to construct a node ***** Initialization ʘšœO™OJšœ ™ Jšœ,™,Jšœ%™%—J˜šÏk ˜ J˜J˜ Jšœ˜J˜ —J˜Jšœ œ œ˜$J˜Jšœœ˜Jšœœœ˜Jšœœ˜Jšœœ ˜J˜J˜Jšœ™J˜šÏnœ˜ Jš œ œ)œœœ˜]Jšœ'™'Jšœ*™*Jšœ&™&J˜—šžœœ œ+œ˜WJšœ*™*Jšœ0™0Jšœ1™1šœ$™$Jšœ=™=J˜——Jšœœ˜J˜Jšœ.™.J˜š žœœœœœœ˜>JšœN™NJ˜—šžœœœ+œ˜SJšœ™J˜J˜—Jšœ™J˜šžœœ œœœœœ˜\Jšœ!™!Jšœ"™"J˜—š ž œœ œœœ˜IJšœI™IJ˜—Jšœ™J˜Jšž œœ˜Jšž œœ˜J˜Jšœ˜J˜—…—Õ