<<--CDDebug.mesa (part of Chipndale)>> <<--by Christian Jacobi June 29, 1983 4:44 pm >> <<--last edited Christian Jacobi November 23, 1983 11:43 am>> DIRECTORY CD, CDVPrivate, CDApplications, CDEvents, CDPrivate, CDSequencer, TerminalIO, Process USING [Detach]; CDDebug: CEDAR PROGRAM IMPORTS CDPrivate, CDSequencer, TerminalIO, Process, CDApplications, CDEvents = BEGIN xdesign: CD.Design; -- some design MyGraphicRef: TYPE = CDVPrivate.MyGraphicRef; BreakProc: PROC [comm: CDSequencer.Command] = BEGIN me: MyGraphicRef = NARROW[comm.ref]; design: CD.Design = comm.design; app: CD.ApplicationPtr = CDApplications.AplicationAt[design^.actual.first.specific.contents, comm.pos]; ob: CD.ObPtr_NIL; type: REF_NIL; spec: REF ANY_NIL; IF app#NIL THEN {ob _ app.ob; IF ob#NIL THEN {type _ ob.p.objectType; spec _ ob.specificRef}}; xdesign _ design; SIGNAL CDPrivate.DebugCall["debug"] END; Debug: PROC [comm: CDSequencer.Command] = BEGIN n: INT_0; n _ TerminalIO.RequestSelection[ label: "Debug options", choice: LIST["proceed", "signal and proceed", "monitored signal"]]; SELECT n FROM 1 => TerminalIO.WriteRope["proceed\n"]; 2 => TRUSTED {Process.Detach[FORK BreakProc[comm]]}; 3 => BreakProc[comm]; ENDCASE => TerminalIO.WriteRope["skipped\n"]; END; NewDesign: CDEvents.EventProc = BEGIN xdesign _ design END; <> <> <> <> <0 THEN d.name ELSE "(no name)"],>> <> <> <> <<];>> <> <<>> <> <> <> <> <> <> <> <<];>> <> Impl: PROC [] = BEGIN CDSequencer.ImplementCommand[$Debug, Debug]; CDEvents.RegisterEventProc[$CreateNewDesign, NewDesign]; <> <> END; Impl[]; END.