From: adam Date: Sun, 25 Dec 2005 10:28:37 +0000 (-0500) Subject: added DiscreteTopology X-Git-Tag: tag_for_25-Mar~485 X-Git-Url: http://git.megacz.com/?p=sbp.git;a=commitdiff_plain;h=f2611533a5703f1256b5ed3a57e36b3909dedad0 added DiscreteTopology darcs-hash:20051225102837-5007d-98bb27c7f4d67e1461c6dccdc1ddfbce81b8f1b5.gz --- diff --git a/src/edu/berkeley/sbp/util/DiscreteTopology.java b/src/edu/berkeley/sbp/util/DiscreteTopology.java new file mode 100644 index 0000000..f78bdae --- /dev/null +++ b/src/edu/berkeley/sbp/util/DiscreteTopology.java @@ -0,0 +1,43 @@ +package edu.berkeley.sbp.util; +import java.io.*; +import java.util.*; +import java.lang.reflect.*; +import java.lang.ref.*; +import edu.berkeley.sbp.util.*; +import edu.berkeley.sbp.*; + +/** implementation of Topology for any class via equals()/hashCode() */ +public class DiscreteTopology implements Topology { + + HashSet hs = new HashSet(); + + public DiscreteTopology() { } + public DiscreteTopology(V v) { hs.add(v); } + DiscreteTopology(HashSet hs) { this.hs.addAll(hs); } + + public Topology fresh() { return new DiscreteTopology(); } + public Topology dup() { return new DiscreteTopology(this.hs); } + + public HashSet hs() { + HashSet ret = new HashSet(); + ret.addAll(hs); + 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 int hashCode() { return hs.hashCode(); } + public boolean equals(Object o) { return o!=null && o instanceof DiscreteTopology && ((DiscreteTopology)o).hs.equals(hs); } + public int size() { return hs.size(); } +}