DIRECTORY BasicTime, Commander, CommandTool, FS, IO, Rope, RoseBind, RoseBindPrivate, RoseTranslate, RoseTranslatePrivate; RoseTranslateImpl: CEDAR PROGRAM IMPORTS BasicTime, Commander, CommandTool, FS, IO, Rope, RoseBindPrivate, RoseTranslatePrivate EXPORTS RoseBind, RoseTranslate = BEGIN ROPE: TYPE = Rope.ROPE; BehaviorClassRec: PUBLIC TYPE = RoseBindPrivate.BehaviorClassRec; translatorTime: PUBLIC BasicTime.GMT _ BasicTime.Now[]; translatorVersion: PUBLIC ROPE _ GetFileLine["RoseTranslator.version"]; cmdBase: ROPE = "RoseTranslate"; installationDir: ROPE = CommandTool.CurrentWorkingDirectory[]; RoseTranslate: PROC [cmd: Commander.Handle] RETURNS [result: REF ANY _ NIL, msg: Rope.ROPE _ NIL] --Commander.CommandProc-- = { commandLineStream: IO.STREAM _ IO.RIS[cmd.commandLine]; FOR i: INT _ commandLineStream.SkipWhitespace[], commandLineStream.SkipWhitespace[] WHILE NOT commandLineStream.EndOf[] DO moduleNameRoot: ROPE _ commandLineStream.GetTokenRope[IO.IDProc].token; moduleRoot: RoseBindPrivate.ModuleRoot _ RoseBindPrivate.EnsureModuleRoot[moduleNameRoot]; IF moduleRoot = NIL THEN { cmd.err.PutF["Module root %g not found!\n", [rope[moduleNameRoot]]]; RETURN [$Failure]; }; RoseTranslatePrivate.TranslateDefs[moduleRoot]; RoseTranslatePrivate.TranslatePrivates[moduleRoot]; ENDLOOP; result _ result; }; GetTranslateCommand: PUBLIC PROC [moduleNameRoot: ROPE] RETURNS [cmd: ROPE] = { cmd _ Rope.Cat[installationDir, cmdBase, " ", moduleNameRoot]; }; GetFileLine: PROC [fileName: ROPE] RETURNS [line: ROPE] = { ENABLE FS.Error, IO.Error, IO.EndOfStream => {line _ "Error reading file"; CONTINUE}; from: IO.STREAM _ FS.StreamOpen[fileName]; [] _ from.SkipWhitespace[]; line _ from.GetLineRope[]; from.Close[]; }; Commander.Register[cmdBase, RoseTranslate, "Generates Rosemary definitions and implementation files"]; END. >RoseTranslateImpl.Mesa Spreitzer, October 22, 1985 1:25:41 pm PDT Barth, September 10, 1985 8:26:25 pm PDT DoMesaFormatting: PROC [tfor: TiogaFileOps.Ref] = { tnr: TextNode.Ref; TRUSTED {tnr _ LOOPHOLE[tfor]}; [] _ TEditMesaOps.SetSpanMesaLooks[ span: [[tnr, 0], TextNode.LastLocWithin[tnr]], event: NIL ]; }; Κp˜™J™+Icode™(—J˜KšΟk œ$œœG˜zK˜šΠbxœœ˜ Kšœ$œœ-˜^Kšœ˜Kšœ˜—K˜Kš˜K˜Kšœœœ˜K˜Kšœœœ$˜AK˜Kšœœ œ˜7Kšœœœ)˜GK˜Kšœ œ˜ Kšœœ)˜>K˜šΟn œœœ œœœ œœΟcœ˜Kš œœœœœ˜7š œœJœœ˜zKšœœ"œ˜GKšœZ˜Zšœœœ˜KšœD˜DKšœ ˜K˜—Kšœ/˜/Kšœ3˜3Kšœ˜—K˜Kšœ˜K˜—š Ÿœœœœœœ˜OKšœ>˜>K˜K˜—šŸœœ™3K™Kšœœ™™#Kšœ.™.Kšœ™ K™—Kšœ™K˜—š Ÿ œœ œœœ˜;Kš œœœœ.œ˜UKšœœœœ˜*K˜Kšœ˜K˜ K˜K˜—Kšœf˜fK˜Kšœ˜—…—< κ