DIRECTORY CGenDebugDefs USING [GetBackup], CodeDefs USING [ConsDestination], FormSW USING [ AllocateItemDescriptor, BooleanItem, ClientItemsProcType, Display, ItemHandle, line0, line1, line2, NumberItem, StringItem], Symbols USING [ContextLevel, lG, lL, lZ], Tool USING [Create, MakeFormSW, MakeSWsProc], ToolWindow USING [SetTinyName, TransitionProcType], Window USING [Handle, Place], WindowFont USING [CharWidth]; CGenDebugCons: PROGRAM IMPORTS CGenDebugDefs, FormSW, Tool, ToolWindow, WindowFont EXPORTS CGenDebugDefs = BEGIN OPEN FormSW, CGenDebugDefs; window: Window.Handle; h: Window.Handle; windowIsActive: BOOLEAN _ FALSE; MakeMySWs: Tool.MakeSWsProc = BEGIN h _ Tool.MakeFormSW[window: window, formProc: MakeParameterArray]; END; Init: PRIVATE PROCEDURE = BEGIN window _ Tool.Create[ makeSWsProc: MakeMySWs, name: "Constructor Destination"L, clientTransition: Transit, cmSection: "ConsDest"L]; ToolWindow.SetTinyName[window, "Cons"L, "Dest"L] END; Transit: ToolWindow.TransitionProcType = {windowIsActive _ new = active}; ConsParamIndex: TYPE = {bd, inFrame, pLoaded, ignSafen, pDel, wSize, fOff, pSti, pLen, rem, bSize, fLvl, pBackup}; ConsParams: TYPE = LONG DESCRIPTOR FOR ARRAY ConsParamIndex OF FormSW.ItemHandle; cw: CARDINAL = WindowFont.CharWidth['w]; Col1: CARDINAL = 0*cw; Col2: CARDINAL = Col1 + 12*cw; Col3: CARDINAL = Col2 + 13*cw; Col4: CARDINAL = Col3 + 13*cw; Col5: CARDINAL = Col4 + 13*cw; bdPlace: Window.Place = [x: Col1, y: line0]; wSizePlace: Window.Place = [x: Col1, y: line1]; bSizePlace: Window.Place = [x: Col1, y: line2]; inFramePlace: Window.Place = [x: Col2, y: line0]; fOffPlace: Window.Place = [x: Col2, y: line1]; fLvlPlace: Window.Place = [x: Col2, y: line2]; pLoadedPlace: Window.Place = [x: Col3, y: line0]; pStiPlace: Window.Place = [x: Col3, y: line1]; pBackupPlace: Window.Place = [x: Col3, y: line2]; ignSafenPlace: Window.Place = [x: Col4, y: line0]; pLenPlace: Window.Place = [x: Col4, y: line1]; pDelPlace: Window.Place = [x: Col5, y: line0]; remPlace: Window.Place = [x: Col5, y: line1]; MakeParameterArray: FormSW.ClientItemsProcType = BEGIN OPEN FormSW; nParams: CARDINAL = LOOPHOLE[LAST[ConsParamIndex], CARDINAL] + 1; params: ConsParams _ LOOPHOLE[ AllocateItemDescriptor[nParams]]; params[bd] _ NumberItem[readOnly: TRUE, signed: FALSE, tag: "bd"L, place: bdPlace, value: @bdWord]; params[wSize] _ NumberItem[readOnly: TRUE, signed: FALSE, tag: "wSize"L, place: wSizePlace, value: @cd.wSize]; params[bSize] _ NumberItem[readOnly: TRUE, signed: FALSE, tag: "bSize"L, place: bSizePlace, value: @bSizeWord]; params[inFrame] _ BooleanItem[ tag: "inFrame"L, place: inFramePlace, switch: @inFrame]; params[fOff] _ NumberItem[readOnly: TRUE, signed: FALSE, tag: "fOff"L, place: fOffPlace, value: @cd.fOffset]; params[fLvl] _ StringItem[ tag: "fLvl"L, place: fLvlPlace, readOnly: TRUE, string: @fLvlString]; params[pLoaded] _ BooleanItem[ tag: "pLoaded"L, place: pLoadedPlace, switch: @pLoaded]; params[pSti] _ NumberItem[readOnly: TRUE, signed: FALSE, tag: "pSti"L, place: pStiPlace, value: @pStiWord]; params[pBackup] _ StringItem[ tag: "pBkp"L, place: pBackupPlace, readOnly: TRUE, string: @pBackupString]; params[ignSafen] _ BooleanItem[ tag: "ignSafen"L, place: ignSafenPlace, switch: @ignSafen]; params[pLen] _ NumberItem[readOnly: TRUE, signed: FALSE, tag: "pLen"L, place: pLenPlace, value: @pLenWord]; params[pDel] _ NumberItem[readOnly: TRUE, tag: "pDel"L, place: pDelPlace, value: @cd.pDelta]; params[rem] _ NumberItem[readOnly: TRUE, signed: FALSE, tag: "rem"L, place: remPlace, value: @cd.remaining]; RETURN[items: LOOPHOLE[params], freeDesc: TRUE]; END; cd: PUBLIC CodeDefs.ConsDestination; UpdateConstDest: PUBLIC PROCEDURE = BEGIN DoLvl: PROC [s: LONG STRING, l: Symbols.ContextLevel] = BEGIN s.length _ 1; s[0] _ SELECT l FROM Symbols.lZ => 'Z, Symbols.lG => 'G, Symbols.lL => 'L, > LAST[Symbols.ContextLevel] => '?, ENDCASE => '0 + l; END; inFrame _ IF cd.inFrame THEN TRUE ELSE FALSE; pLoaded _ IF cd.pLoaded THEN TRUE ELSE FALSE; ignSafen _ IF cd.ignoreSafen THEN TRUE ELSE FALSE; bdWord _ cd.bd; bSizeWord _ cd.bSize; DoLvl[fLvlString, cd.fLevel]; pLenWord _ cd.pLength; pStiWord _ LOOPHOLE[cd.pSti]; CGenDebugDefs.GetBackup[pBackupString, cd.pBackup]; IF windowIsActive THEN FormSW.Display[h]; END; inFrame, pLoaded, ignSafen: BOOLEAN; bdWord: CARDINAL; bSizeWord: CARDINAL; pLenWord: CARDINAL; pStiWord: CARDINAL; fLvlShortString: STRING _ [1]; pBackupShortString: STRING _ [30]; fLvlString: LONG STRING _ fLvlShortString; pBackupString: LONG STRING _ pBackupShortString; Init[]; END. >CGenDebugCons.mesa Edited by Sweet, 18-Feb-83 22:09:38 ʧ˜šœ6™6J˜—šÏk ˜ Jšœœ ˜ Jšœ œ˜!šœœ˜J˜CJ˜9—Jšœœ˜)Jšœœ#˜-Jšœ œ#˜3Jšœœ˜šœ œ ˜J˜——šœœ˜Jšœ4˜;Jšœ˜Jš˜šœ˜J˜—J˜J˜Jšœœœ˜ J˜˜Jš˜J˜BJšœ˜——˜šÏnœœ œ˜Jš˜˜J˜J˜!J˜J˜—J˜0Jšœ˜——˜J˜I—˜šœœ)˜=J˜4—š œ œœ œœœ˜>J˜J˜—Jšœœ˜(—˜Jšœœ˜Jšœœ˜Jšœœ˜Jšœœ˜Jšœœ˜—˜J˜,J˜/J˜/—˜J˜1J˜.J˜.—˜J˜1J˜.J˜1—˜J˜2J˜.—˜J˜.J˜-—˜˜0Jšœœ ˜Jš œ œœœœ˜Ašœœ˜J˜!———˜šœ"œ œ˜6J˜,—šœ%œ œ˜9J˜4—šœ%œ œ˜9J˜5—J˜˜J˜8—šœ$œ œ˜8J˜4—˜Jšœ*œ˜E—J˜˜J˜8—šœ$œ œ˜8J˜2—˜Jšœ-œ˜K—J˜—˜˜J˜;—šœ$œ œ˜8J˜2—J˜šœ$œ˜)J˜3—šœ#œ œ˜7J˜4——˜Jšœœœ˜0Jšœ˜—˜Jšœœ˜$—˜šžœœ œ˜#Jš˜šžœœœœ˜7Jš˜J˜ šœœ˜J˜J˜J˜Jšœœ˜#Jšœ ˜—Jšœ˜—Jš œ œ œœœœ˜-Jš œ œ œœœœ˜-Jš œ œœœœœ˜2J˜J˜J˜J˜Jšœ œ ˜J˜3Jšœœ˜)Jšœ˜——J˜˜Jšœœ˜$Jšœœ˜Jšœ œ˜Jšœ œ˜Jšœ œ˜Jšœœ˜Jšœœ˜"Jšœ œœ˜*Jšœœœ˜0—˜J˜J˜Jšœ˜—J˜—…—îÓ