@Override public Object report(final Context context) throws LogoException { AgentSet sourceSet = argEvalAgentSet(context, 0); args[1].checkAgentSetClass(sourceSet, context); double winningValue = Double.MAX_VALUE; List<Agent> winners = new ArrayList<Agent>(); org.nlogo.nvm.Context freshContext = new org.nlogo.nvm.Context(context, sourceSet); for (AgentSet.Iterator iter = sourceSet.iterator(); iter.hasNext(); ) { org.nlogo.agent.Agent tester = iter.next(); Object result = freshContext.evaluateReporter(tester, args[1]); if (!(result instanceof Double)) { continue; } double dvalue = ((Double) result).doubleValue(); // need to be careful here to handle properly the case where // dvalue equals Double.MAX_VALUE - ST 10/11/04 if (dvalue <= winningValue) { if (dvalue < winningValue) { winningValue = dvalue; winners.clear(); } winners.add(tester); } } if (winners.isEmpty()) { return org.nlogo.api.Nobody$.MODULE$; } else { return winners.get(context.job.random.nextInt(winners.size())); } }
public double report_1(Context context, AgentSet sourceSet, Reporter block) throws LogoException { block.checkAgentSetClass(sourceSet, context); Context freshContext = new Context(context, sourceSet); int result = 0; for (AgentSet.Iterator iter = sourceSet.iterator(); iter.hasNext(); ) { Agent tester = iter.next(); Object value = freshContext.evaluateReporter(tester, block); if (!(value instanceof Boolean)) { throw new EngineException( context, this, I18N.errorsJ() .getN( "org.nlogo.prim.$common.expectedBooleanValue", displayName(), Dump.logoObject(tester), Dump.logoObject(value))); } if (((Boolean) value).booleanValue()) { result++; } } return result; }