X-Git-Url: http://git.megacz.com/?p=sbp.git;a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fsbp%2Futil%2FIntegerTopology.java;h=e1bec151904e3570dae4f980d4ac6398616bd2a8;hp=cac19e9b19676da56eb8ec7fde15d15c2be445b5;hb=6b53048f4413f3c618acc3581d0b4f60a236a9bc;hpb=84a4a8204373b996105e69edf91d2f9fae7b4bcb;ds=inline
diff --git a/src/edu/berkeley/sbp/util/IntegerTopology.java b/src/edu/berkeley/sbp/util/IntegerTopology.java
index cac19e9..e1bec15 100644
--- a/src/edu/berkeley/sbp/util/IntegerTopology.java
+++ b/src/edu/berkeley/sbp/util/IntegerTopology.java
@@ -9,7 +9,9 @@ import edu.berkeley.sbp.*;
/** implementation of Topology for any class for which there is a mapping to the ints */
public class IntegerTopology implements Topology {
private final Range.Set rs;
-
+
+ private static final IntegerTopology empty = new IntegerTopology();
+
public Range.Set getRanges() { return new Range.Set(rs); }
public IntegerTopology() { this(new Range.Set()); }
@@ -20,23 +22,18 @@ public class IntegerTopology implemen
public IntegerTopology(Range r) { this(new Range.Set(r)); }
public IntegerTopology(Range.Set rs) { this.rs = rs; }
- public Topology fresh() { return new IntegerTopology(); }
- public Topology dup() { return new IntegerTopology(this.rs); }
- public Topology dup(Range.Set rs) { return new IntegerTopology(rs); }
+ public Topology empty() { return (Topology)empty; }
- public void add(Topology t) { rs.add(((IntegerTopology)t).rs); }
- public void remove(Topology t) { rs.remove(((IntegerTopology)t).rs); }
- public void add(V v) { rs.add(v.toInt()); }
- public void remove(V v) { rs.remove(v.toInt()); }
public boolean contains(V v) { return rs.contains(v.toInt()); }
- public Topology complement() { return dup(rs.complement()); }
- public Topology intersect(Topology t) { return dup(rs.intersect(((IntegerTopology)t).rs)); }
- public Topology minus(Topology t) { return dup(rs.intersect(((IntegerTopology)t).rs.complement())); }
- public Topology union(Topology t) { return dup(rs.union(((IntegerTopology)t).rs)); }
- public boolean disjoint(Topology t) { return rs.intersect(((IntegerTopology)t).rs).size()==0; }
- public boolean containsAll(Topology t) { return rs.intersect(((IntegerTopology)t).rs).equals(((IntegerTopology)t).rs); }
+ public Topology complement() { return new IntegerTopology(rs.complement()); }
+ public Topology intersect(Topology t) { return new IntegerTopology(rs.intersect(((IntegerTopology)t.unwrap()).rs)); }
+ public Topology minus(Topology t) { return new IntegerTopology(rs.intersect(((IntegerTopology)t.unwrap()).rs.complement())); }
+ public Topology union(Topology t) { return new IntegerTopology(rs.union(((IntegerTopology)t.unwrap()).rs)); }
+ public boolean disjoint(Topology t) { return rs.intersect(((IntegerTopology)t.unwrap()).rs).size()==0; }
+ public boolean containsAll(Topology t) { return rs.containsAll(((IntegerTopology)t.unwrap()).rs); }
+ public Topology unwrap() { return this; }
public int hashCode() { return rs.hashCode(); }
public boolean equals(Object o) { return o!=null && o instanceof IntegerTopology && ((IntegerTopology)o).rs.equals(rs); }