Interpress Master Writing Procs
The following procedures produce the various types in the "Xerox Encoding."
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]]];
Note: "proc" is called "bytesPerItem" times for each element of the vector
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];
Private Stuff (appears here for Cedar clustering)
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];