Skip to content

Commit d59009a

Browse files
arthurhjorthmrerrormessage
authored andcommitted
Reporting child model breed/var lists correctly
1 parent 6d4e006 commit d59009a

2 files changed

Lines changed: 33 additions & 11 deletions

File tree

src/main/ChildModel.java

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -184,17 +184,19 @@ public LogoList listBreeds() {
184184

185185
public LogoList listBreedsOwns() {
186186
LogoListBuilder llb = new LogoListBuilder();
187+
// add turtle vars as a separate tuple
188+
LogoListBuilder tuple = new LogoListBuilder();
189+
LogoListBuilder vars = new LogoListBuilder();
190+
vars.addAll(workspace().world().program().turtlesOwn());
191+
tuple.add("TURTLES");
192+
tuple.add(vars.toLogoList());
193+
llb.add(tuple.toLogoList());
194+
187195
for (Map.Entry<String, List<String>> entry : workspace().world().program().breedsOwn().entrySet())
188196
{
189-
LogoListBuilder tuple = new LogoListBuilder();
190-
LogoListBuilder vars = new LogoListBuilder();
191-
for (String s : entry.getValue()){
192-
vars.add(s);
193-
}
194-
// add turtles own to all of them too
195-
for (String s: workspace().world().program().turtlesOwn()){
196-
vars.add(s);
197-
}
197+
tuple = new LogoListBuilder();
198+
vars = new LogoListBuilder();
199+
vars.addAll(entry.getValue());
198200
tuple.add(entry.getKey());
199201
tuple.add(vars.toLogoList());
200202
llb.add(tuple.toLogoList());
@@ -380,7 +382,6 @@ public LogoList getProcedures() {
380382
String theString = p.args.get(i);
381383
argLLB.add(theString);
382384
}
383-
// p.syntax().
384385
pList.add(argLLB.toLogoList());
385386
outerLLB.add(pList.toLogoList());
386387
}

src/main/LevelsSpace.java

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717

1818
import org.nlogo.api.*;
1919
import org.nlogo.api.Argument;
20-
import org.nlogo.api.CommandTask;
2120
import org.nlogo.api.Context;
2221
import org.nlogo.app.App;
2322
import org.nlogo.api.ExtensionObject;
@@ -29,6 +28,7 @@
2928
import org.nlogo.api.Syntax;
3029
import org.nlogo.app.ToolsMenu;
3130
import org.nlogo.nvm.*;
31+
import org.nlogo.nvm.ReporterTask;
3232
import org.nlogo.window.SpeedSliderPanel;
3333
import org.nlogo.window.ViewUpdatePanel;
3434

@@ -80,6 +80,7 @@ public void load(PrimitiveManager primitiveManager) throws ExtensionException {
8080
primitiveManager.addPrimitive("of-descendant", new HierarchicalOf());
8181
primitiveManager.addPrimitive("uses-level-space?", new UsesLevelSpace());
8282
primitiveManager.addPrimitive("_model-procedures", new ModelProcedures());
83+
primitiveManager.addPrimitive("to-OTPL", new ToOTPL());
8384

8485

8586
if (useGUI()) {
@@ -384,6 +385,26 @@ public Object report(Argument[] args, Context arg1)
384385

385386
}
386387

388+
public static class ToOTPL extends DefaultReporter {
389+
public Syntax getSyntax(){
390+
return Syntax.reporterSyntax(new int[] {Syntax.CommandTaskType() | Syntax.ReporterTaskType() },
391+
Syntax.StringType());
392+
}
393+
@Override
394+
public Object report(Argument[] args, Context arg1)
395+
throws ExtensionException, LogoException {
396+
Object task = args[0].get();
397+
if (task instanceof ReporterTask) {
398+
ReporterTask rTask = (ReporterTask) task;
399+
return rTask.body().agentClassString;
400+
} else {
401+
org.nlogo.nvm.CommandTask cTask = (org.nlogo.nvm.CommandTask) task;
402+
return cTask.procedure().syntax().agentClassString();
403+
}
404+
}
405+
406+
}
407+
387408

388409
public static class CloseModel extends DefaultCommand {
389410
public Syntax getSyntax() {

0 commit comments

Comments
 (0)