projects
/
sbp.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
refactored Topology to make it a value (immutable) class
[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
7812a51
..
8862be6
100644
(file)
--- a/
src/edu/berkeley/sbp/util/TopologicalBag.java
+++ b/
src/edu/berkeley/sbp/util/TopologicalBag.java
@@
-27,11
+27,11
@@
public class TopologicalBag<K,V> implements MapBag<Topology<K>,V> {
public void add(Topology<K> t, V v) { put(t, v); }
public void addAll(Topology<K> k, Iterable<V> vi) { putAll(k, vi); }
public void add(Topology<K> t, V v) { put(t, v); }
public void addAll(Topology<K> k, Iterable<V> vi) { putAll(k, vi); }
- public void putAll(Topology<K> k, Iterable<V> vi) { for(V v : vi) put(k, v); }
+ public void putAll(Topology<K> k, Iterable<V> vi) { if (vi!=null) for(V v : vi) put(k, v); }
public void put(Topology<K> t, V v) {
for(Topology<K> ht : h.keySet()) {
if (t.disjoint(ht)) continue;
public void put(Topology<K> t, V v) {
for(Topology<K> ht : h.keySet()) {
if (t.disjoint(ht)) continue;
- if (t.equals(ht)) {
+ if (t.containsAll(ht) && ht.containsAll(t)) {
h.get(ht).add(v);
return;
}
h.get(ht).add(v);
return;
}
@@
-59,7
+59,9
@@
public class TopologicalBag<K,V> implements MapBag<Topology<K>,V> {
TopologicalBag<K,V> ret = new TopologicalBag<K,V>();
for(Topology<K> ht : h.keySet()) {
if (ht.disjoint(t)) continue;
TopologicalBag<K,V> ret = new TopologicalBag<K,V>();
for(Topology<K> ht : h.keySet()) {
if (ht.disjoint(t)) continue;
- ret.putAll(ht.intersect(t), h.get(ht));
+ Iterable<V> it = h.get(ht);
+ Topology<K> tk = ht.intersect(t);
+ ret.putAll(tk, it);
}
return ret;
}
}
return ret;
}