<> <> <> <> DIRECTORY Atom, IO, Rope, TiogaAccess; UnparserBuffer: CEDAR DEFINITIONS = <> BEGIN ROPE: TYPE = Rope.ROPE; PropList: TYPE = Atom.PropList; Handle: TYPE = REF PublicParts; PublicParts: TYPE = RECORD [ margin: INTEGER _ 80, <> width: ARRAY CHAR OF INTEGER _ ALL [1], spacers: LIST OF CHAR _ NIL, <> <> output: BufferOutput, ps: Privates _ NIL ]; <> BufferOutputKind: TYPE = {stream, access}; BufferOutput: TYPE = RECORD [ variant: SELECT kind: BufferOutputKind FROM stream => [stream: IO.STREAM], <> <> <> <> access => [ access: TiogaAccess.Writer, nestWidth: INTEGER _ 1], ENDCASE]; Privates: TYPE = REF PrivateParts; PrivateParts: TYPE; NewInittedHandle: PROC [publics: PublicParts] RETURNS [Handle]; <> <> <> CreatePrivates: PROC [margin: INTEGER _ 80] RETURNS [Privates]; Init: PROC [h: Handle]; <> Setb: PROC [h: Handle]; <> Endb: PROC [h: Handle]; <> Bp: PROC [h: Handle, cond: BreakCondition, offset: INTEGER, sep: ROPE]; <> BreakCondition: TYPE = {width, lookLeft, united, always}; Charb: PROC [h: Handle, ch: CHAR]; <> Ropeb: PROC [h: Handle, r: ROPE]; <> Atomb: PROC [h: Handle, a: ATOM]; <> Newlineb: PROC [h: Handle, offset: INTEGER] = INLINE {Bp[h, always, offset, NIL]}; <> Looksb: PROC [h: Handle, looks: ROPE]; <> CharPropsb: PROC [h: Handle, props: --immutable--PropList]; <> <> NodeFormatb: PROC [h: Handle, format: ATOM]; NodeCommentb: PROC [h: Handle, comment: BOOL]; NodePropsb: PROC [h: Handle, props: --immutable--PropList]; END.