2756aae89e6a78582cd68017eb54a1f14b74270f
[sbp.git] / src / edu / berkeley / sbp / util / Topology.java
1 package edu.berkeley.sbp.util;
2 import edu.berkeley.sbp.util.*;
3 import edu.berkeley.sbp.*;
4 import java.io.*;
5 import java.util.*;
6 import java.lang.reflect.*;
7 import java.lang.ref.*;
8
9 // FIXME: this should be a value class -- add/remove/etc should return new Topology objects
10 /** values inhabiting a topology over <tt>V</tt> (roughly, infinite sets of <tt>V</tt>'s equipped with union/intersection/complement) */
11 public interface Topology<V> {
12
13     public void              add(Topology<V> t);
14     public void              add(V t);
15     public void              remove(Topology<V> t);
16     public void              remove(V t);
17     public Topology<V>       dup();
18     public boolean           contains(V v);
19     public Topology<V>       fresh();
20
21     public Topology<V>       intersect(Topology<V> t);
22     public Topology<V>       minus(Topology<V> t);
23     public Topology<V>       union(Topology<V> t);
24     public Topology<V>       complement();
25     public boolean           disjoint(Topology<V> t);
26     public boolean           containsAll(Topology<V> t);
27
28     public abstract int     hashCode();
29     public abstract boolean equals(Object o);
30 }