X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fsbp%2Futil%2FIntegerTopology.java;h=e82ce736dbf8e3528feddc1e5a1bf795e12652c2;hb=3473141880127c6aa52d094d51739e5eb67f1703;hp=cac19e9b19676da56eb8ec7fde15d15c2be445b5;hpb=c61dfbe5593a9257d39e84261d48472a74975afa;p=sbp.git diff --git a/src/edu/berkeley/sbp/util/IntegerTopology.java b/src/edu/berkeley/sbp/util/IntegerTopology.java index cac19e9..e82ce73 100644 --- a/src/edu/berkeley/sbp/util/IntegerTopology.java +++ b/src/edu/berkeley/sbp/util/IntegerTopology.java @@ -7,9 +7,11 @@ import edu.berkeley.sbp.util.*; import edu.berkeley.sbp.*; /** implementation of Topology for any class for which there is a mapping to the ints */ -public class IntegerTopology implements Topology { +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); } @@ -70,7 +67,4 @@ public class IntegerTopology implemen return sb.toString(); } */ - public static interface IntegerMappable { - public int toInt(); - } }