DIRECTORY FS USING [OpenFile], IO USING [STREAM], Rope USING [ROPE], TextNode USING [Ref]; PutGet: CEDAR DEFINITIONS = BEGIN Ref: TYPE = TextNode.Ref; ROPE: TYPE = Rope.ROPE; MaxLen: INT = LAST[INT]; ToFile: PROC [fileName: ROPE, node: Ref, start: INT _ 0, flatten, textOnly: BOOL _ FALSE] RETURNS [dataLen, count: INT]; ToFileC: PROC [file: FS.OpenFile, node: Ref, start: INT _ 0, flatten, textOnly: BOOL _ FALSE] RETURNS [dataLen, count: INT]; FromFile: PROC [fileName: ROPE, start: INT _ 0, len: INT _ MaxLen] RETURNS [Ref]; FromFileC: PROC [file: FS.OpenFile, start: INT _ 0, len: INT _ MaxLen] RETURNS [Ref]; FromFileError: ERROR; WritePlain: PROC[h: IO.STREAM, root: Ref, restoreDashes: BOOL _ FALSE]; WriteFilePlain: PROC [fileName: ROPE, root: Ref]; WriteFileCPlain: PROC [file: FS.OpenFile, root: Ref]; WriteMesaFilePlain: PROC [fileName: ROPE, root: Ref]; ToRope: PROC [node: Ref, flatten, textOnly: BOOL _ FALSE] RETURNS [dataLen, count: INT, output: ROPE]; FromRope: PROC [rope: ROPE, start: INT _ 0, len: INT _ MaxLen] RETURNS [Ref]; WriteRopePlain: PROC [root: Ref, restoreDashes: BOOL _ FALSE] RETURNS [output: ROPE]; ToStream: PROC [stream: IO.STREAM, node: Ref, flatten, textOnly: BOOL _ FALSE] RETURNS [dataLen, count: INT]; FromStream: PROC [stream: IO.STREAM, len: INT _ MaxLen] RETURNS [Ref]; END. rPutGet.mesa Copyright c 1985 by Xerox Corporation. All rights reserved. written by Bill Paxton, May 1981 last edit by Paxton. October 21, 1982 1:55 pm Russ Atkinson, July 22, 1983 10:24 am Doug Wyatt, March 2, 1985 4:41:37 pm PST File Input/Output write the node on the specified file starts writing at given address in file returns dataLen = number of data bytes at start of file, and count = the total 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 (i.e., password not correct) then returns a single node containing contents of the file gives text of file with CR after each node and TABs before according to nesting like WriteFilePlain, but adds initial dashes to comments if necessary. 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 ส$˜codešœ ™ Kšœ ฯmœ1™™>Kšœ:™:—K˜—šœžœ˜K˜—K˜Jš   œžœžœžœžœžœ˜GKš œžœ žœ ˜1š œžœžœ˜5KšœO™OK˜—š œžœ žœ ˜5KšœF™FK™——šœ)™)š œžœ žœžœžœžœ žœ˜gKšœK™KK˜—š  œžœžœ žœ žœ žœ˜MKšœ™K˜—š  œžœžœžœžœ žœ˜UK˜——šœ ™ š œžœ žœžœ žœžœžœžœ˜nKšœ™Kšœ™K˜—š   œžœ žœžœžœ žœ˜FKšœF™FK˜——K˜Kšžœ˜—…—< า