X-Git-Url: http://git.megacz.com/?p=sbp.git;a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fsbp%2Futil%2FTopologicalBag.java;h=6c538e6b2957d40879df12e149aa8800cafec9b6;hp=27157cdffba8431551a2482d301e2b744693a23f;hb=f33c05adc5aa3dd324c5352cdbd6f4b55359acad;hpb=ce56b1e47ae08b71599fe5794f71034f6f53ec5d diff --git a/src/edu/berkeley/sbp/util/TopologicalBag.java b/src/edu/berkeley/sbp/util/TopologicalBag.java index 27157cd..6c538e6 100644 --- a/src/edu/berkeley/sbp/util/TopologicalBag.java +++ b/src/edu/berkeley/sbp/util/TopologicalBag.java @@ -134,5 +134,49 @@ public class TopologicalBag implements MapBag,V>, VisitableMap< return ret; } } + + public VisitableMap optimize() { + ArrayList min_ = new ArrayList(); + ArrayList max_ = new ArrayList(); + ArrayList v_ = new ArrayList(); + for(Topology t : h.keySet()) { + ArrayList al = new ArrayList(); + for(V vv : h.get(t)) al.add(vv); + Object[] vs = new Object[al.size()]; + al.toArray(vs); + IntegerTopology it = (IntegerTopology)t; + for(Range r : it.getRanges()) { + min_.add(r.isMinNegInf() ? Long.MIN_VALUE : r.getMin()); + max_.add(r.isMaxPosInf() ? Long.MAX_VALUE : r.getMax()); + v_.add(vs); + } + } + final int size = v_.size(); + final long[] min = new long[size]; for(int i=0; i() { + public boolean contains(K k) { + IntegerTopology.IntegerMappable im = (IntegerTopology.IntegerMappable)k; + int asint = im.toInt(); + 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(); + for(int i=0; i= asint) { + Object[] arr = v[i]; + for(int j=0; j emptyIterator = new EmptyIterator(); }