<> <> <> DIRECTORY Rope USING [ROPE], ViewerClasses USING [Viewer, ViewerRec], ViewerOps USING [DestroyViewer]; TypeScript: CEDAR DEFINITIONS IMPORTS ViewerOps = BEGIN TS: TYPE = ViewerClasses.Viewer; <> Create: PROC [info: ViewerClasses.ViewerRec, paint: BOOL _ TRUE] RETURNS [ts: TS] ; IsATypescript: PROC [ts: TS] RETURNS [yes: BOOL] = INLINE { RETURN [ts # NIL AND ts.class.flavor = $Typescript] }; Destroy: PROC [ts: TS] = INLINE {ViewerOps.DestroyViewer[ts]}; <> Reset: PROC [ts: TS] = INLINE {ts.class.init[ts]}; <> <> PutChar: PROC [ts: TS, char: CHAR] ; PutRope: PROC [ts: TS, rope: Rope.ROPE] ; PutText: PROC [ts: TS, text: REF READONLY TEXT, start: INTEGER _ 0, stopPlusOne: INTEGER _ LAST[INTEGER]]; BackSpace: PROC [ts: TS, count: INT _ 1]; <> ChangeLooks: PROC [ts: TS, look: CHAR]; <> <> <> <<>> AddLooks: PROC [ts: TS, look: CHAR]; <> RemoveLooks: PROC [ts: TS, look: CHAR]; <> ClearLooks: PROC [ts: TS]; <> GetLooks: PROC [ts: TS] RETURNS [looks: Rope.ROPE]; <> <> GetChar: PROC [ts: TS] RETURNS [char: CHARACTER] ; CharsAvailable: PROC [ts: TS] RETURNS [BOOLEAN] ; <> <> TypeIn: PROC [ts: TS, input: REF ANY] = INLINE {ts.class.notify[ts, LIST[input]]} ; <> InsertRopeAtFrontOfBuffer: PROC [ts: TS, rope: Rope.ROPE]; <> InsertCharAtFrontOfBuffer: PROC [ts: TS, char: CHARACTER]; <> Flush: PROC [ts: TS]; <> WaitUntilIdle: PROC [ts: TS]; <> <<>> WaitUntilCharsAvail: PROC [ts: TS]; <> <> UserAbort: PROC [ts: TS] RETURNS [abort: BOOLEAN] ; ResetUserAbort: PROC [ts: TS] ; SetUserAbort: PROC [ts: TS] ; END.