X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fsbp%2Fchr%2FCharTopology.java;h=8445eb3f53bcec548e5545282ab53c0ddb67f695;hb=acfe58223b9a0f78e64a14a1ca5d5998626ee3fe;hp=3a065d13d7b93dc255a75e8921597b8ef621e516;hpb=6a2ea790f843e058c7e67d3c7d1deebadcfe1fd5;p=sbp.git diff --git a/src/edu/berkeley/sbp/chr/CharTopology.java b/src/edu/berkeley/sbp/chr/CharTopology.java index 3a065d1..8445eb3 100644 --- a/src/edu/berkeley/sbp/chr/CharTopology.java +++ b/src/edu/berkeley/sbp/chr/CharTopology.java @@ -7,18 +7,19 @@ public class CharTopology extends IntegerTopology implements Functor< public CharTopology() { super(null); } public CharTopology(Range.Set r) { super(null, r); } + public CharTopology(Topology it) { this(((IntegerTopology)it.unwrap()).getRanges()); } public CharTopology(char a, char b) { super(null, a, b); } public Integer invoke(Character c) { return (int)c.charValue(); } public String toString() { StringBuffer sb = new StringBuffer(); - sb.append('['); Range.Set ranges = getRanges(); if (ranges.size() == -1 || ranges.size() > Character.MAX_VALUE/2) { sb.append('~'); ranges = ranges.complement(); } + sb.append('['); ranges = ranges.intersect(new Range.Set(new Range(0, Character.MAX_VALUE))); for(Range r : ranges) { if (r.isMinNegInf() || r.isMaxPosInf()) throw new Error("should not happen"); @@ -34,6 +35,6 @@ public class CharTopology extends IntegerTopology implements Functor< return sb.toString(); } - private String esc(char c) { return StringUtil.escapify(c+"", "[]-~\\\"\'"); } + private String esc(char c) { return StringUtil.escapify(c+"", "[]-~\\\"\'\n\r"); } }