import edu.berkeley.sbp.*;
/** an element which matches exactly one input token */
-public abstract class Atom<T extends Token> extends Element {
+public abstract class Atom<T extends Token> extends Element implements Topology<T> {
private final Topology<T> rt;
/** declared abstract to force subclasses to override it in a useful manner */
public abstract String toString();
+
+ // Topology Thunks //////////////////////////////////////////////////////////////////////////////
+
+ public void add(Topology<T> t) { rt.add(t); }
+ public void add(T t) { rt.add(t); }
+ public void remove(Topology<T> t) { rt.remove(t); }
+ public void remove(T t) { rt.remove(t); }
+ public Topology<T> dup() { return rt.dup(); }
+ public boolean contains(T v) { return rt.contains(v); }
+ public Topology<T> fresh() { return rt.fresh(); }
+ public Topology<T> intersect(Topology<T> t) { return rt.intersect(t); }
+ public Topology<T> minus(Topology<T> t) { return rt.minus(t); }
+ public Topology<T> union(Topology<T> t) { return rt.union(t); }
+ public Topology<T> complement() { return rt.complement(); }
+ public boolean disjoint(Topology<T> t) { return rt.disjoint(t); }
+ public boolean containsAll(Topology<T> t) { return rt.containsAll(t); }
+
}