DIRECTORY SameBreakWorld, BreakWorldArchitecture, CirioBreakAccess, CirioNubAccess, IO, LoadStateAccess, NewRMTW, PFS, Rope, SystemInterface; SameBreakWorldImpl: CEDAR PROGRAM IMPORTS SystemInterface, CirioNubAccess, LoadStateAccess, NewRMTW, IO, PFS, CirioBreakAccess EXPORTS SameBreakWorld ~ { Handle: PUBLIC TYPE ~ REF HandleRep ¬ NIL; HandleRep: PUBLIC TYPE ~ RECORD [ sameWorldNub: CirioNubAccess.Handle ¬ NIL, fileSet: SystemInterface.FileSet ¬ NIL, moduleSet: NewRMTW.CedarModuleSet ¬ NIL, loadState: LoadStateAccess.LoadStateHandle ¬ NIL, breakWorld: BreakWorldArchitecture.BreakWorld ¬ BreakWorldArchitecture.nullBreakWorld ]; Create: PUBLIC PROCEDURE [] RETURNS [SameBreakWorld.Handle] ~ { handle: Handle ¬ NEW[HandleRep ¬ [ sameWorldNub: , fileSet: , moduleSet: NIL, loadState: NIL, breakWorld: BreakWorldArchitecture.nullBreakWorld]]; sameWorldServerName: Rope.ROPE ~ "sameWorld"; handle.sameWorldNub ¬ CirioNubAccess.CreateSameWorldNub[]; handle.fileSet ¬ SystemInterface.CreateFileSet[]; handle.moduleSet ¬ NewRMTW.CreateCedarModuleSet[fileSet: handle.fileSet]; handle.loadState ¬ LoadStateAccess.CreateLoadStateHandle[ serverName: sameWorldServerName, nub: handle.sameWorldNub, fileSet: handle.fileSet]; { breakSet: CirioBreakAccess.CirioBreakSet ¬ CirioBreakAccess.CreateCirioBreakSet[ nub: handle.sameWorldNub, fileNameStem: "PopUpDriver2", breakProcName: "BreakPointPopUp"]; handle.breakWorld ¬ CirioBreakAccess.BreakWorldFromBreakSet[breaks: breakSet]; }; RETURN [handle]; }; Destroy: PUBLIC PROCEDURE [handle: SameBreakWorld.Handle] RETURNS [] ~ { IF handle # NIL THEN { IF handle.breakWorld # BreakWorldArchitecture.nullBreakWorld THEN { handle.breakWorld ¬ BreakWorldArchitecture.nullBreakWorld; }; IF handle.loadState # NIL THEN { handle.loadState ¬ NIL; }; IF handle.moduleSet # NIL THEN { handle.moduleSet ¬ NIL; }; IF handle.fileSet # NIL THEN { SystemInterface.CloseFileSet[set: handle.fileSet]; handle.fileSet ¬ NIL; }; IF handle.sameWorldNub # NIL THEN { CirioNubAccess.DestroyNub[h: handle.sameWorldNub]; handle.sameWorldNub ¬ NIL; }; }; RETURN; }; BreakWorld: PUBLIC PROCEDURE [handle: SameBreakWorld.Handle] RETURNS [BreakWorldArchitecture.BreakWorld] ~ { breakWorld: BreakWorldArchitecture.BreakWorld ¬ BreakWorldArchitecture.nullBreakWorld; IF handle # SameBreakWorld.nullHandle THEN { breakWorld ¬ handle.breakWorld }; RETURN [breakWorld]; }; PCFromFileAndPosition: PUBLIC PROCEDURE [ handle: SameBreakWorld.Handle, mesaFilename: Rope.ROPE, position: INT, report: IO.STREAM] RETURNS [address: CARD ¬ 0, correspondingPosition: INT ¬ 0] ~ { IF handle # SameBreakWorld.nullHandle THEN { ENABLE { SystemInterface.ShowReport => { report.PutRope[msgText]; report.PutChar['\n]; RESUME; }; }; mesaFile: NewRMTW.CirioFile ¬ SystemInterface.GetCirioFile[ set: handle.fileSet, name: PFS.PathFromRope[rope: mesaFilename]]; addr: REF NewRMTW.CedarBreakAddress ¬ NewRMTW.GetAbsAddressForBreak[ modules: handle.moduleSet, mesa: mesaFile, loadState: handle.loadState, sourcePos: position]; IF addr = NIL THEN ERROR NotFound; address ¬ addr.absPC; correspondingPosition ¬ addr.correspondingMesaPosition; }; RETURN [address: address, correspondingPosition: correspondingPosition]; }; NotFound: PUBLIC ERROR ~ CODE; }.  SameBreakWorldImpl.mesa Copyright Σ 1990, 1992 by Xerox Corporation. All rights reserved. Peter B. Kessler, August 6, 1990 5:10 pm PDT Access to Cirio for the same world. cf. LocalCirioImpl.InstallNewConnectionComponents. cf. Cirio/LocalCirioImpl.mesa Κ.–(cedarcode) style•NewlineDelimiter ™codešœ™Kšœ Οeœ7™BK™,K™K™#K™šΟk ˜ Kšœ˜Kšœ˜K˜K˜Kšžœ˜Kšœ˜K˜Kšžœ˜Kšœ˜Kšœ˜K˜——unitšΠlnœžœž˜!šžœ˜Kšœ;žœžœ˜T—Kšžœ˜˜K˜š œžœžœžœ žœ˜*šœ žœžœžœ˜!Kšœ&žœ˜*Kšœ#žœ˜'Kšœ$žœ˜(Kšœ-ž˜1˜0Kšœ%˜%—K˜K˜——šΟnœžœž œžœ˜?šœžœ˜"Kšœ˜Kšœ ˜ Kšœ žœ˜Kšœ žœ˜Kšœ4˜4—šœžœ˜-Kšœ2™2—K˜:K˜1K˜I˜9Kšœ!˜!Kšœ3˜3—˜˜PKšœ˜Kšœ˜Kšœ"˜"Kšœ™—K˜NK˜—Kšžœ ˜K˜K˜—š œžœž œ!žœ˜Hšžœ žœžœ˜šžœ;žœ˜CK˜:K˜—šžœžœžœ˜ Kšœžœ˜K˜—šžœžœžœ˜ Kšœžœ˜K˜—šžœžœžœ˜Kšœ2˜2Kšœžœ˜K˜—šžœžœžœ˜#Kšœ2˜2Kšœžœ˜K˜—K˜—Kšžœ˜K˜K˜—š  œžœž œ"žœ(˜m˜0Kšœ&˜&—K˜šžœ$žœ˜,K˜Kšœ˜—Kšžœ˜Kšœ˜K˜—š œžœž œ5žœ žœ žœžœžœ žœžœ ˜Δšžœ$žœ˜-šžœ˜˜Kšœ˜Kšœ˜Kšžœ˜Kšœ˜—Kšœ˜—˜;Kšœžœ#˜A—šœžœ;˜DKšœ˜Kšœ˜Kšœ˜Kšœ˜—K˜Kšžœžœžœžœ ˜"K˜K˜7Kšœ˜—KšžœB˜HK˜K˜—š œžœžœžœ˜K˜——L˜——…— Ύς