<> <> <> <> DIRECTORY IO USING [DeliverWhenProc, STREAM], MBQueue USING [Queue], Rope USING [ROPE], ViewerClasses USING [Viewer, ViewerRec]; ReadEvalPrint: CEDAR DEFINITIONS = BEGIN <> Handle: TYPE = REF RObject; RObject: TYPE = MONITORED RECORD [ viewer: ViewerClasses.Viewer _ NIL, in: IO.STREAM _ NIL, out: IO.STREAM _ NIL, menuHitQueue: MBQueue.Queue, terminateRequested: BOOL _ FALSE, clientProc: ClientProc _ NIL, deliverWhenProc: IO.DeliverWhenProc _ NIL, prompt: Rope.ROPE _ NIL, promptProc: PROC [Handle] _ NIL, bulletProof: BOOL _ TRUE, clientData: REF ANY _ NIL, ruboutProc: PROC [Handle] _ NIL, readUserAbortedRope: Rope.ROPE _ NIL, -- " XXX\n" readABORTEDRope: Rope.ROPE _ NIL, -- " aborted\n" readIOSignalRope: Rope.ROPE _ NIL, -- " XXX\n" evalABORTEDRope: Rope.ROPE _ NIL, -- " ...Aborted\n" evalUserAbortedRope: Rope.ROPE _ NIL, -- " ...UserAbort {msg}\n", msg is from the signal evalUNWINDRope: Rope.ROPE _ NIL -- " ...Unwound\n" ]; <<>> <> <> <> <> <> <> ClientProc: TYPE = PROC [h: Handle, command: Rope.ROPE] RETURNS [result: Rope.ROPE _ NIL]; <> CreateViewerEvaluator: PROC [clientProc: ClientProc, prompt: Rope.ROPE _ NIL, info: ViewerClasses.ViewerRec _ [], edited: BOOL _ TRUE, deliverWhen: IO.DeliverWhenProc _ IsACR, clientData: REF ANY _ NIL] RETURNS [Handle]; <> <<>> CreateStreamEvaluator: PROC [clientProc: ClientProc, prompt: Rope.ROPE _ NIL, in, out: IO.STREAM, deliverWhen: IO.DeliverWhenProc _ NIL, clientData: REF ANY _ NIL] RETURNS [Handle]; <> MainLoop: PROC [h: Handle, forkAndDetach: BOOL _ TRUE]; <> Stop: PROC [h: Handle]; <> IsACR: IO.DeliverWhenProc; <> END.