From f2611533a5703f1256b5ed3a57e36b3909dedad0 Mon Sep 17 00:00:00 2001 From: adam Date: Sun, 25 Dec 2005 05:28:37 -0500 Subject: [PATCH] added DiscreteTopology darcs-hash:20051225102837-5007d-98bb27c7f4d67e1461c6dccdc1ddfbce81b8f1b5.gz --- src/edu/berkeley/sbp/util/DiscreteTopology.java | 43 +++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 src/edu/berkeley/sbp/util/DiscreteTopology.java 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(); } +} -- 1.7.10.4