<> <> <> <> <> DIRECTORY Atom, IO, Rope, TiogaAccess; UnparserBuffer: CEDAR DEFINITIONS = BEGIN Handle: TYPE = REF HandleRec; NewHandle: PROC [output: BufferOutput, margin: INTEGER _ 80] RETURNS [Handle]; <> Init: PROC [h: Handle]; <> Setb: PROC [h: Handle]; <> Endb: PROC [h: Handle]; <> Bp: PROC[h: Handle, united: BOOL, offset: INTEGER]; <> Charb: PROC [h: Handle, ch: CHAR]; <> Ropeb: PROC [h: Handle, r: Rope.ROPE]; <> Atomb: PROC [h: Handle, a: ATOM]; <> Newlineb: PROC [h: Handle, offset: INTEGER]; <> Looksb: PROC [h: Handle, looks: Rope.ROPE]; <> HandleRec: TYPE = RECORD [ <<>> <> margin: INTEGER _ 80, <> width: ARRAY CHAR OF INTEGER _ ALL [1], spacers: LIST OF CHAR, <> <> output: BufferOutput, clientData: REF _ NIL, <<>> <> bufferWidth: PRIVATE INTEGER _ 0, bl, cl, br, cr, sr, srx: PRIVATE INTEGER _ 0, c: PRIVATE ARRAY [0 .. n) OF CHAR _ ALL['?], dl: PRIVATE ARRAY [0 .. n) OF Rope.ROPE _ ALL[NIL], b: PRIVATE ARRAY [0 .. n) OF RECORD [ type: {setb, breakpoint}, united: BOOL, offset: INTEGER, p: [0 .. n)] _ ALL[[setb, FALSE, 0, 0]], s: PRIVATE ARRAY [0 .. n) OF INTEGER _ ALL[0], indentation: PRIVATE INTEGER _ 0, depth: PRIVATE INTEGER _ 0, curLooks: PRIVATE TiogaAccess.Looks _ ALL[FALSE] ]; BufferOutputKind: TYPE = {stream, access}; BufferOutput: TYPE = RECORD [ variant: SELECT kind: BufferOutputKind FROM stream => [stream: IO.STREAM], access => [ access: TiogaAccess.Writer, format: ATOM _ NIL, nestWidth: INTEGER _ 1], ENDCASE]; n: INT = 256; <> END.