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; Impl: PROC [] = BEGIN CDSequencer.ImplementCommand[$Debug, Debug]; CDEvents.RegisterEventProc[$CreateNewDesign, NewDesign]; END; Impl[]; END. --CDDebug.mesa (part of Chipndale) --by Christian Jacobi June 29, 1983 4:44 pm --last edited Christian Jacobi November 23, 1983 11:43 am PrintDesign: PrintTV.RefPrintProc = BEGIN d: REF READONLY CD.DesignRec _ NARROW[ref]; stream.PutF["{Design: %g, technology: %g}", rope[IF Rope.Length[d.name]>0 THEN d.name ELSE "(no name)"], IF d.technology=NIL THEN rope["NIL"] ELSE IF d.technology.name#NIL THEN rope[d.technology.name] ELSE atom[d.technology.key] ]; END; PrintTechnology: PrintTV.RefPrintProc = BEGIN t: REF READONLY CD.TechnologyRec _ NARROW[ref]; stream.PutF["{Technology: %g}", IF t.technology=NIL THEN rope["NIL"] ELSE IF t.technology.name#NIL THEN rope[t.technology.name] ELSE atom[t.technology.key] ]; END; PrintTV.RegisterRefPrintProc[referentType: CODE[CD.DesignRec], proc: PrintTechnology]; PrintTV.RegisterRefPrintProc[referentType: CODE[CD.TechnologyRec], proc: PrintDesign]; Ę2˜Jšœ$™$Jšœ.™.Jšœ;™;J˜šĎk ˜ Jšœ˜Jšœ ˜ J˜Jšœ ˜ J˜ J˜ J˜ Jšœœ ˜J˜—šĎnœœ˜JšœI˜P—Jš˜J˜Jšœ œ Ďc˜#J˜Jšœœ˜-J˜šž œœ˜-Jšœ˜Jšœœ ˜$Jšœœ˜ Jšœœ`˜gJšœœœ˜Jšœœœ˜Jšœœœœ˜šœœœ˜Jšœœœœ2˜N—Jšœ˜Jšœ˜#Jšœ˜J˜—šžœœ˜)Jšœ˜Jšœœ˜ ˜ J˜Jšœœ7˜C—šœ˜ J˜'Jšœœœ˜4J˜Jšœ&˜-—Jšœ˜J˜—šž œ˜Jš˜J˜Jšœ˜J˜—šĎb œ™#Jš™Jš œœœœ œ™+šœ,™,Jšœœœœ™