convered maximal to use character lookahead
[sbp.git] / src / edu / berkeley / sbp / util / TopologicalBag.java
index 7812a51..2a1bb53 100644 (file)
@@ -27,7 +27,7 @@ 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;
@@ -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;
     }