X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fsbp%2Futil%2FTopologicalBag.java;h=eb71cdc6641ffd00520cacd38197fd2d09f9c957;hb=8ed318cb9c9f27861adf519522cbe9d95f094dab;hp=6c538e6b2957d40879df12e149aa8800cafec9b6;hpb=f33c05adc5aa3dd324c5352cdbd6f4b55359acad;p=sbp.git diff --git a/src/edu/berkeley/sbp/util/TopologicalBag.java b/src/edu/berkeley/sbp/util/TopologicalBag.java index 6c538e6..eb71cdc 100644 --- a/src/edu/berkeley/sbp/util/TopologicalBag.java +++ b/src/edu/berkeley/sbp/util/TopologicalBag.java @@ -1,3 +1,5 @@ +// Copyright 2006 all rights reserved; see LICENSE file for BSD-style license + package edu.berkeley.sbp.util; import edu.berkeley.sbp.util.*; import edu.berkeley.sbp.*; @@ -101,11 +103,11 @@ public class TopologicalBag implements MapBag,V>, VisitableMap< private HashMap> cache = new HashMap>(); public Iterable getAll(Topology k) { return h.get(k); } - public void invoke(K k, Invokable ivbc, B b, C c) { + public void invoke(K k, Invokable ivbc, B b) { for(Topology t : h.keySet()) if (t.contains(k)) for(V v : h.get(t)) - ivbc.invoke(v, b, c); + ivbc.invoke(v, b); } public Iterable get(K k) { @@ -135,7 +137,7 @@ public class TopologicalBag implements MapBag,V>, VisitableMap< } } - public VisitableMap optimize() { + public VisitableMap optimize(final Functor f) { ArrayList min_ = new ArrayList(); ArrayList max_ = new ArrayList(); ArrayList v_ = new ArrayList(); @@ -157,21 +159,19 @@ public class TopologicalBag implements MapBag,V>, VisitableMap< final Object[][] v = new Object[size][]; v_.toArray(v); return new VisitableMap() { public boolean contains(K k) { - IntegerTopology.IntegerMappable im = (IntegerTopology.IntegerMappable)k; - int asint = im.toInt(); + int asint = f.invoke(k); for(int i=0; i= asint && v[i].length > 0) return true; return false; } - public void invoke(K k, Invokable ivbc, B b, C c) { - IntegerTopology.IntegerMappable im = (IntegerTopology.IntegerMappable)k; - int asint = im.toInt(); + public void invoke(K k, Invokable ivbc, B b) { + int asint = f.invoke(k); for(int i=0; i= asint) { Object[] arr = v[i]; for(int j=0; j