DIRECTORY IO USING [Handle], IPXeroxEncoding USING [SequenceType, EncodingValue], Rope USING [MaxLen, ROPE]; IPEncodingOut: CEDAR DEFINITIONS = BEGIN OPEN IPX: IPXeroxEncoding; Handle: TYPE = RECORD[h: IO.Handle]; -- allows Cedar clustering OpenOutputMaster: PROCEDURE [name: Rope.ROPE] RETURNS[h: Handle]; CloseMaster: PROCEDURE [h: Handle]; AppendByte: PROCEDURE [h: Handle, val: [0..255]]; AppendSequenceDescriptor: PROCEDURE [h: Handle, type: IPX.SequenceType, length: NAT]; AppendString: PROCEDURE [h: Handle, length: NAT, proc: PROCEDURE RETURNS [c: [0..255]]]; AppendRope: PROCEDURE [h: Handle, rope: Rope.ROPE, start: INT _ 0, len: INT _ Rope.MaxLen]; AppendLargeVector: PROCEDURE [ h: Handle, length: NAT, bytesPerItem: [0..255], proc: PROCEDURE RETURNS [c: [0..255]]]; AppendReal: PROCEDURE [h: Handle, n: REAL]; AppendRational: PROCEDURE [h: Handle, i, j: INT]; AppendInteger: PROCEDURE [h: Handle, i: INT]; AppendOp: PROCEDURE [h: Handle, op: IPX.EncodingValue]; AppendIdentifier: PROCEDURE [h: Handle, id: Rope.ROPE, start: INT _ 0, len: INT _ Rope.MaxLen]; AppendComment: PROCEDURE [h: Handle, c: Rope.ROPE]; Append2Int: PRIVATE PROCEDURE [h: Handle, e: CARDINAL, c: CARDINAL]; AppendLongInteger: PRIVATE PROCEDURE [h: Handle, f: INT, e: CARDINAL]; Append2Rational: PRIVATE PROCEDURE [h: Handle, i: INT, e: INTEGER]; AppendInt: PRIVATE PROCEDURE [h: Handle, i: INT, c: CARDINAL]; WriteInterpressHeader: PRIVATE PROCEDURE [h: Handle]; NotInterpress: SIGNAL; Error: ERROR [errorCode: ErrorCode]; ErrorCode: PUBLIC TYPE = {FileNotAvailable, RopeEncodingError}; END. ΦIPEncodingOut.mesa Written by John Warnock, August 26,1981 Last edited by Chuck Geschke, April 16, 1982 9:58 AM Last edited by Andy Shore, February 14, 1983 3:54 pm This module provides the Interpress literal interface (see Introduction to Interpress chapter 7). It writes the "Xerox Encoding" form of Interpress 2.0. See IPOperatorOut for the higher-level "operator interface". Interpress Master Creation Procs OpenOutputMaster opens an output file and writes the header. CloseMaster closes the output master. Interpress Master Writing Procs The following procedures produce the various types in the "Xerox Encoding." Note: "proc" is called "bytesPerItem" times for each element of the vector Private Stuff (appears here for Cedar clustering) Change Log Changed by Shore; August 23, 1982 4:04 pm updated for Cedar 3.3 (changed IOStream to IO) Changed by Shore; September 4, 1982 3:06 pm modified to use Doug's Latest IPXeroxEncoding Changed by Shore; September 24, 1982 12:58 pm made changes suggested by Sproull -- AppendRope now here, etc Change by Shore; November 11, 1982 2:04 pm change to Cedar.Style and added node styles Changed by Shore; January 19, 1983 3:34 pm changed to CEDAR, Interpress 2.0, and new node styles Κ1– "Cedar" style˜headšœ™JšΟc'™'Jš5™5Jš4™4—IbodyšΠbcž ™aLšž™6šœ +™<unitšΟk ˜ JšŸœŸœ ˜JšœŸœ˜4JšœŸœ Ÿœ˜——šœŸœŸ œŸ˜(JšŸœŸœ˜J˜JšœŸœŸœŸœ ˜@head2š ™ šΟnœŸ œ ŸœŸœ ˜AJš<™<—š  œŸ œ ˜#Jš%™%——š™Jš:ž™KMš  œŸ œ˜1Mš œŸ œŸœŸœ˜UMš   œŸ œŸœŸ œŸœ˜YMš   œŸ œŸœ Ÿœ Ÿœ˜[š œŸ œ˜Jšœ ˜ JšœŸœ˜ Jšœ˜JšœŸ œŸœ˜(JšJ™J—Mš  œŸ œŸœ˜+Mš œŸ œŸœ˜1Mš  œŸ œŸœ˜-Mš œŸ œŸœ˜7Mš  œŸ œŸœ Ÿœ Ÿœ˜`Mš  œŸ œŸœ˜3—šΟs#™1Mš   œŸœŸ œŸœŸœ˜DMš  œŸœŸ œŸœŸœ˜FMš  œŸœŸ œŸœŸœ˜CMš   œŸœŸ œŸœŸœ˜>Mš œŸœŸ œ ˜5—MšœŸœ˜J˜JšœŸœ˜$Jšœ ŸœŸœ)˜?J˜JšŸœ˜—šœ ™ šœ)™)Jšœ+Ÿœ™.—J™™+Jšœ-™-—J™™-J™=—J™™*J™+—J™™*J™5———…—29