X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;ds=sidebyside;f=src%2Fedu%2Fberkeley%2Fsbp%2Futil%2FDiscreteTopology.java;h=0fb75eb390787e0f1f4658afc9718fb199a59bbe;hb=6ae224025882c9929e2e4e9e8461decbf3b9cae4;hp=f78bdaee2717890bc8ea4698f8c0f04f31d34d58;hpb=f2611533a5703f1256b5ed3a57e36b3909dedad0;p=sbp.git
diff --git a/src/edu/berkeley/sbp/util/DiscreteTopology.java b/src/edu/berkeley/sbp/util/DiscreteTopology.java
index f78bdae..0fb75eb 100644
--- a/src/edu/berkeley/sbp/util/DiscreteTopology.java
+++ b/src/edu/berkeley/sbp/util/DiscreteTopology.java
@@ -9,14 +9,15 @@ import edu.berkeley.sbp.*;
/** implementation of Topology for any class via equals()/hashCode() */
public class DiscreteTopology implements Topology {
+ private static final DiscreteTopology empty = new DiscreteTopology();
+
HashSet hs = new HashSet();
public DiscreteTopology() { }
public DiscreteTopology(V v) { hs.add(v); }
- DiscreteTopology(HashSet hs) { this.hs.addAll(hs); }
+ DiscreteTopology(HashSet hs) { this.hs.addAll(hs); }
- public Topology fresh() { return new DiscreteTopology(); }
- public Topology dup() { return new DiscreteTopology(this.hs); }
+ public Topology empty() { return (Topology)empty; }
public HashSet hs() {
HashSet ret = new HashSet();
@@ -24,18 +25,15 @@ public class DiscreteTopology implements Topology {
return ret;
}
- public void add(Topology t) { hs.addAll(((DiscreteTopology)t).hs); }
- public void remove(Topology t) { hs.removeAll(((DiscreteTopology)t).hs); }
- public void add(V v) { hs.add(v); }
- public void remove(V v) { hs.remove(v); }
public boolean contains(V v) { return hs.contains(v); }
- public Topology complement() { /*return dup(hs.complement());*/ throw new Error(); }
- public Topology intersect(Topology t) { return new DiscreteTopology(hs().retainAll(((DiscreteTopology)t).hs)); }
- public Topology minus(Topology t) { return new DiscreteTopology(hs().removeAll(((DiscreteTopology)t).hs)); }
- public Topology union(Topology t) { return new DiscreteTopology(hs().addAll(((DiscreteTopology)t).hs)); }
- public boolean disjoint(Topology t) { return ((DiscreteTopology)intersect(t)).size()==0; }
- public boolean containsAll(Topology t) { return hs.containsAll(((DiscreteTopology)t).hs); }
+ public Topology unwrap() { return this; }
+ public Topology complement() { throw new Error(); }
+ public Topology intersect(Topology t) { return new DiscreteTopology(hs().retainAll(((DiscreteTopology)t.unwrap()).hs)); }
+ public Topology minus(Topology t) { return new DiscreteTopology(hs().removeAll(((DiscreteTopology)t.unwrap()).hs)); }
+ public Topology union(Topology t) { return new DiscreteTopology(hs().addAll(((DiscreteTopology)t.unwrap()).hs)); }
+ public boolean disjoint(Topology t) { return ((DiscreteTopology)intersect(t).unwrap()).size()==0; }
+ public boolean containsAll(Topology t) { return hs.containsAll(((DiscreteTopology)t.unwrap()).hs); }
public int hashCode() { return hs.hashCode(); }
public boolean equals(Object o) { return o!=null && o instanceof DiscreteTopology && ((DiscreteTopology)o).hs.equals(hs); }