RegisterJaMImager.mesa
Last Edited by: Stone, January 31, 1984 5:22:54 pm PST
DIRECTORY
Commander USING [Register, CommandProc],
JaM USING [State],
JaMTS USING [GetLastHandle, JaMData, CreateJaMTS],
List USING [Assoc, CopyTopList],
Rope USING [Cat, ROPE],
Convert USING [RopeFromInt],
ReadEvalPrint USING [Handle],
JaMImager USING [Create];
RegisterJaMImager: CEDAR PROGRAM
IMPORTS Commander, Convert, Rope, List, JaMImager, JaMTS = {
called: INT ← 0;
NewJaMImager: Commander.CommandProc --[cmd: Commander.Handle]-- = {
rep: ReadEvalPrint.Handle ← JaMTS.GetLastHandle[];
data: JaMTS.JaMData;
IF rep=NIL THEN {
name: Rope.ROPE ← "JaM";
rules: LIST OF REF ANY ← List.CopyTopList[NARROW[List.Assoc[key: $SearchRules, aList: cmd.propertyList]]];
IF called#0 THEN name ← Rope.Cat[name,Convert.RopeFromInt[from: called, showRadix: FALSE]];
rep ← JaMTS.CreateJaMTS[name, cmd.commandLine, rules];
called ← called+1;
};
data ← NARROW[rep.clientData];
result ← JaMImager.Create[state: data.state, typescript: rep.viewer];
};
Commander.Register[key: "JaMImager", proc: NewJaMImager, doc: "Start JaM, its typescript and its Imager viewer"];
}.