projects
/
sbp.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
no longer need to thread a Grammar through Parser.Table
[sbp.git]
/
src
/
edu
/
berkeley
/
sbp
/
util
/
TopologicalBag.java
diff --git
a/src/edu/berkeley/sbp/util/TopologicalBag.java
b/src/edu/berkeley/sbp/util/TopologicalBag.java
index
6e73681
..
b034baf
100644
(file)
--- a/
src/edu/berkeley/sbp/util/TopologicalBag.java
+++ b/
src/edu/berkeley/sbp/util/TopologicalBag.java
@@
-1,3
+1,5
@@
+// Copyright 2006-2007 all rights reserved; see LICENSE file for BSD-style license
+
package edu.berkeley.sbp.util;
import edu.berkeley.sbp.util.*;
import edu.berkeley.sbp.*;
package edu.berkeley.sbp.util;
import edu.berkeley.sbp.util.*;
import edu.berkeley.sbp.*;
@@
-12,7
+14,7
@@
import java.lang.ref.*;
//
/** a mapping from topologies over <tt>K</tt> to <i>sets of</i> values of type <tt>V</tt> */
//
/** a mapping from topologies over <tt>K</tt> to <i>sets of</i> values of type <tt>V</tt> */
-public class TopologicalBag<K,V> implements MapBag<Topology<K>,V>, VisitableMap<K,V> {
+public class TopologicalBag<K,V> implements MapBag<Topology<K>,V>, VisitableMap<K,V>, Serializable {
// CRUCIAL INVARIANT: keys in this hashmap MUST be disjoint or the universe will implode
private final HashMap<Topology<K>,HashSet<V>> h = new HashMap<Topology<K>,HashSet<V>>();
// CRUCIAL INVARIANT: keys in this hashmap MUST be disjoint or the universe will implode
private final HashMap<Topology<K>,HashSet<V>> h = new HashMap<Topology<K>,HashSet<V>>();
@@
-101,11
+103,11
@@
public class TopologicalBag<K,V> implements MapBag<Topology<K>,V>, VisitableMap<
private HashMap<K,Iterable<V>> cache = new HashMap<K,Iterable<V>>();
public Iterable<V> getAll(Topology<K> k) { return h.get(k); }
private HashMap<K,Iterable<V>> cache = new HashMap<K,Iterable<V>>();
public Iterable<V> getAll(Topology<K> k) { return h.get(k); }
- public <B,C> void invoke(K k, Invokable<V,B,C> ivbc, B b, C c) {
+ public <B> void invoke(K k, Invokable<V,B> ivbc, B b) {
for(Topology<K> t : h.keySet())
if (t.contains(k))
for(V v : h.get(t))
for(Topology<K> t : h.keySet())
if (t.contains(k))
for(V v : h.get(t))
- ivbc.invoke(v, b, c);
+ ivbc.invoke(v, b);
}
public Iterable<V> get(K k) {
}
public Iterable<V> get(K k) {
@@
-144,8
+146,6
@@
public class TopologicalBag<K,V> implements MapBag<Topology<K>,V>, VisitableMap<
for(V vv : h.get(t)) al.add(vv);
Object[] vs = new Object[al.size()];
al.toArray(vs);
for(V vv : h.get(t)) al.add(vv);
Object[] vs = new Object[al.size()];
al.toArray(vs);
- // XXX hack
- if (t instanceof Atom) t = ((Atom)t).underlying();
IntegerTopology it = (IntegerTopology)t;
for(Range r : it.getRanges()) {
min_.add(r.isMinNegInf() ? Long.MIN_VALUE : r.getMin());
IntegerTopology it = (IntegerTopology)t;
for(Range r : it.getRanges()) {
min_.add(r.isMinNegInf() ? Long.MIN_VALUE : r.getMin());
@@
-165,13
+165,13
@@
public class TopologicalBag<K,V> implements MapBag<Topology<K>,V>, VisitableMap<
return true;
return false;
}
return true;
return false;
}
- public <B,C> void invoke(K k, Invokable<V,B,C> ivbc, B b, C c) {
+ public <B> void invoke(K k, Invokable<V,B> ivbc, B b) {
int asint = f.invoke(k);
for(int i=0; i<size; i++) {
if (min[i] <= asint && max[i] >= asint) {
Object[] arr = v[i];
for(int j=0; j<arr.length; j++)
int asint = f.invoke(k);
for(int i=0; i<size; i++) {
if (min[i] <= asint && max[i] >= asint) {
Object[] arr = v[i];
for(int j=0; j<arr.length; j++)
- ivbc.invoke((V)arr[j], b, c);
+ ivbc.invoke((V)arr[j], b);
}
}
}
}
}
}