DIRECTORY MDebugDefs USING [ CellCard, ClearCachedFrames, CmdIndex, GetLongSelectionValue, GetSelectionValue, Handle, PutAsLabelInfoIndex, PutCurrentBody, PutCurrentExpr, PutCurrentSource, PutCurrentStmt, PutLabelState], IO, Labels USING [Set], Menus USING [MouseButton], RESOut USING [], Rope USING [Concat, ROPE], STDebugDefs USING [ NextSe, PutAsBti, PutAsCti, PutAsHti, PutAsMdi, PutAsSei, PutAsTree, PutAsVariousRep], Symbols USING [ISEIndex, ISENull, SEIndex], Tree USING [Index], ViewerTools USING [GetContents]; MDebugCommands: PROGRAM IMPORTS MDebugDefs, IO, Labels, Rope, STDebugDefs, ViewerTools EXPORTS MDebugDefs, RESOut, STDebugDefs = BEGIN OPEN MDebugDefs, STDebugDefs; ROPE: TYPE = Rope.ROPE; Handle: TYPE = MDebugDefs.Handle; cancelAction: PUBLIC ERROR [endLine: BOOLEAN _ FALSE] = CODE; DoCommand: PUBLIC PROC [h: Handle, cmd: CmdIndex, button: Menus.MouseButton] = BEGIN ENABLE cancelAction => GO TO dont; Complain[h: h, msg: NIL, abort: FALSE]; h.stopFlag _ FALSE; SELECT cmd FROM tree => { index: Tree.Index _ GetSelectionValue[h]; PutAsTree[h, [subtree[index]]]}; lbl => PutLabelState[h]; lii => PutAsLabelInfoIndex[h, GetSelectionValue[h]]; sei => { sei: Symbols.SEIndex _ GetSelectionValue[h]; IF PutAsSei[h, sei] THEN h.lastId _ LOOPHOLE[sei]}; nextse => { nsei: Symbols.ISEIndex _ NextSe[h, h.lastId]; IF nsei # Symbols.ISENull THEN {[] _ PutAsSei[h, nsei]; h.lastId _ nsei}; }; hti => PutAsHti[h, GetSelectionValue[h]]; cti => PutAsCti[h, GetSelectionValue[h]]; bti => PutAsBti[h, GetSelectionValue[h]]; mdi => PutAsMdi[h, GetSelectionValue[h]]; rep => PutAsVariousRep[h, GetLongSelectionValue[h]]; body => PutCurrentBody[h]; stmt => PutCurrentStmt[h]; expr => PutCurrentExpr[h]; gFrames => ClearCachedFrames[h]; source => PutCurrentSource[h]; ENDCASE; EXITS dont => RETURN; END; TreeDepth: PUBLIC SAFE PROC [h: REF ANY] RETURNS [CARDINAL] = TRUSTED { han: Handle _ NARROW[h]; RETURN [MDebugDefs.CellCard[han, han.cmd.dVal]]}; ShowLinks: PUBLIC SAFE PROCEDURE [h: REF ANY] RETURNS [BOOL] = TRUSTED { han: Handle _ NARROW[h]; RETURN[han.showLinks^]}; Complain: PUBLIC SAFE PROCEDURE [h: REF ANY , msg: ROPE, abort, clear: BOOLEAN _ TRUE] = TRUSTED BEGIN handle: Handle _ NARROW[h]; IF ~clear THEN msg _ Rope.Concat[ViewerTools.GetContents[handle.msg], msg]; Labels.Set[handle.msg, msg]; IF abort THEN ERROR cancelAction; END; PChar: PUBLIC SAFE PROCEDURE [h: REF ANY , c: CHARACTER] = TRUSTED BEGIN handle: Handle = NARROW[h]; IF handle.stopFlag THEN ERROR cancelAction[TRUE]; handle.out.PutChar[c]; handle.charsOnLine _ SELECT c FROM '\n => 0, ENDCASE => handle.charsOnLine + 1; END; MakeRoom: PUBLIC SAFE PROCEDURE [h: REF ANY , chars, indent: CARDINAL] RETURNS [was: BOOLEAN] = TRUSTED BEGIN handle: Handle = NARROW[h]; charsPerLine: CARDINAL = handle.ts.ww/handle.en-3; IF handle.charsOnLine + chars <= charsPerLine THEN RETURN [TRUE]; PChar[h, '\n]; THROUGH [0..indent) DO PChar[h, ' ]; ENDLOOP; RETURN[FALSE]; END; END. βMDebugCommands.mesa Edited by Bruce, 14-Oct-81 11:06:09 Edited by Sweet, 14-Jan-83 15:48:28 Edited by Haynes, 29-Nov-82 20:27:52 Sweet June 2, 1986 10:28:30 am PDT Things exported to STDebugDefs log writing procedures ΚK˜Jšœ™Jšœ#™#Jšœ#™#šœ$™$Icode™"—J˜šΟk ˜ šœ œ˜JšœQ˜QJšœ˜J˜ J˜1—Jšœ˜Jšœœ˜Jšœœ˜Jšœœ˜Jšœœœ˜šœ œ˜J˜DJšœ˜—Jšœœ˜+Jšœœ ˜Jšœ œ˜ —J˜šœœ˜Jšœ œ(˜>Jšœ"˜)Jšœœ˜#J˜Jšœœœ˜J˜Jšœœ˜!š œœœ œœœ˜=J˜—šΟn œœœ8˜NJš˜Jšœœœ˜#Jšœœ œ˜'Jšœ œ˜šœ˜˜ J˜)J˜ —J˜˜4J˜—˜J˜,Jšœœ œ˜3—˜ J˜-Jšœœ+˜IJ˜—J˜)J˜)J˜)˜)J˜—˜4J˜—J˜J˜J˜šœ ˜ J˜—J˜Jšœ˜—š˜Jšœœ˜—Jšœ˜J˜——šœ™J™šž œœœœœœœœœ˜GJšœœ˜Jšœ+˜1—J˜šž œœœ œœœœœœ˜HJšœœ˜Jšœ˜J˜—šžœœœœœœœœ˜XJš ˜ Jšœœ˜Jšœœ=˜KJ˜Jšœœœ˜!Jšœ˜J˜—J˜—šœ™J˜šžœœœ œœœ œ˜BJš˜Jšœœ˜Jšœœœœ˜1J˜šœœ˜"Jšœ ˜ Jšœ˜"—Jšœ˜J˜—š žœœœœœœ˜GJšœœ˜ Jš˜Jšœœ˜Jšœœ˜2Jšœ,œœœ˜AJšœ˜Jšœ œœ˜-Jšœœ˜Jšœ˜J˜—Jšœ˜—J˜—…— ’Ο