<<>> <> <> <> <> <> DIRECTORY IO, Rope, UnparserBuffer; <> StructuredStreams: CEDAR DEFINITIONS = { ROPE: TYPE = Rope.ROPE; BreakCondition: TYPE = UnparserBuffer.BreakCondition; XBreakCondition: TYPE = UnparserBuffer.XBreakCondition; Create: PROC [onTopOf: UnparserBuffer.Handle] RETURNS [ss: IO.STREAM]; <> IsAnSS: PROC [s: IO.STREAM] RETURNS [BOOLEAN]; GetHandle: PROC [ss: IO.STREAM] RETURNS [UnparserBuffer.Handle]; <> <> Strip: PROC [ss: IO.STREAM] RETURNS [IO.STREAM]; <> <> <> CloseThrough: PROC [self: IO.STREAM]; <> <> <> <<>> <> <<>> <> <<%l [rope[>> <<%p [refAny[charProps]] applies the given props to the following chars;>> <<%n [refAny[nodeProps]] applies the props to nodes that end later;>> <<%n [atom[format]] sets format of nodes that end later;>> <<%n [boolean[comment]] sets comment property of nodes that end later.>> <<>> <> Begin, End: PROC [ss: IO.STREAM]; <> <<>> Bp: PROC [ss: IO.STREAM, cond: BreakCondition, offset: INTEGER, sep: ROPE ¬ NIL]; <> XBp: PROC [ss: IO.STREAM, cond: XBreakCondition, offset: INTEGER, sep: ROPE ¬ NIL]; <> <<>> Newlineb: PROC [ss: IO.STREAM, offset: INTEGER] = INLINE {Bp[ss, always, offset, NIL]}; <> <<>> ChangeMargin: PROC [ss: IO.STREAM, newMargin: INTEGER ¬ 69]; <> }.