X-Git-Url: http://git.megacz.com/?p=sbp.git;a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fsbp%2Fchr%2FCharAtom.java;h=89a45ad154ff1603eaac320f7a74eab792a11611;hp=c0df627c090ce29edc5ebbec67289f73d645e6e4;hb=173e1696d10a91db6f5a919dbb2b2ed2c6e2a227;hpb=0e17670bcfa7b0fe8eb3a2cac81f4b080a09fc98 diff --git a/src/edu/berkeley/sbp/chr/CharAtom.java b/src/edu/berkeley/sbp/chr/CharAtom.java index c0df627..89a45ad 100644 --- a/src/edu/berkeley/sbp/chr/CharAtom.java +++ b/src/edu/berkeley/sbp/chr/CharAtom.java @@ -10,9 +10,11 @@ import edu.berkeley.sbp.Input.Location; public class CharAtom extends Atom { + public CharAtom() { this(new CharTopology()); } public CharAtom(char a) { this(a,a); } public CharAtom(char a, char b) { this(new CharTopology(a, b)); } public CharAtom(CharTopology t) { this.t = t; } + public CharAtom(Topology t) { this(t instanceof CharTopology ? (CharTopology)t : new CharTopology(t)); } private CharTopology t; public Topology top() { return t; } @@ -50,4 +52,21 @@ public class CharAtom extends Atom { private static Union epsilon = new Union("()"); static { epsilon.add(Sequence.empty); } + + public Topology> unwrap() { return this; } + public Topology> empty() { return new CharAtom(); } + public Topology underlying() { return top(); } + + public boolean contains(Atom v) { return top().containsAll(((CharAtom)v).top()); } + public boolean disjoint(Topology> t) { return top().disjoint(((CharAtom)t).top()); } + public boolean containsAll(Topology> t) { return top().containsAll(((CharAtom)t).top()); } + + public Topology> complement() { return new CharAtom(top().complement()); } + public Topology> intersect(Topology> t) { return new CharAtom(top().intersect(((CharAtom)t).top())); } + public Topology> minus(Topology> t) { return new CharAtom(top().minus(((CharAtom)t).top())); } + public Topology> union(Topology> t) { return new CharAtom(top().union(((CharAtom)t).top())); } + + public int hashCode() { return top().hashCode(); } + public boolean equals(Object o) { return o != null && (o instanceof CharAtom) && ((CharAtom)o).top().equals(top()); } + }