X-Git-Url: http://git.megacz.com/?p=sbp.git;a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fsbp%2Fchr%2FCharTopology.java;h=4f1bb31eeb9013c612e99ebe8bdf6678e3477371;hp=d407e992e470422a9bf8689cbb2d72545588b20c;hb=062890b2da58d55687949e119d96179edc09b403;hpb=927dc9b785de472f2237c5adbc4d2ad12f16cc2d diff --git a/src/edu/berkeley/sbp/chr/CharTopology.java b/src/edu/berkeley/sbp/chr/CharTopology.java index d407e99..4f1bb31 100644 --- a/src/edu/berkeley/sbp/chr/CharTopology.java +++ b/src/edu/berkeley/sbp/chr/CharTopology.java @@ -1,3 +1,5 @@ +// Copyright 2006-2007 all rights reserved; see LICENSE file for BSD-style license + package edu.berkeley.sbp.chr; import edu.berkeley.sbp.*; import edu.berkeley.sbp.misc.*; @@ -7,18 +9,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 +37,10 @@ public class CharTopology extends IntegerTopology implements Functor< return sb.toString(); } - private String esc(char c) { return StringUtil.escapify(c+"", "[]-~\\\"\'\n\r"); } + private String esc(char c) { + if (c==CharAtom.left) return ">>"; + if (c==CharAtom.right) return "<<"; + return StringUtil.escapify(c+"", "[]-~\\\"\'\n\r"); + } }