/* */ package com.ibm.icu.text;
/* */
/* */ import com.ibm.icu.impl.ICUDebug;
/* */ import com.ibm.icu.util.ULocale;
/* */ import com.ibm.icu.util.ULocale.Type;
/* */ import java.lang.ref.SoftReference;
/* */ import java.text.CharacterIterator;
/* */ import java.text.StringCharacterIterator;
/* */ import java.util.Locale;
/* */ import java.util.MissingResourceException;
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */ public abstract class BreakIterator
/* */ implements Cloneable
/* */ {
/* 209 */ private static final boolean DEBUG = ICUDebug.enabled("breakiterator");
/* */
/* */ public static final int DONE = -1;
/* */
/* */ public static final int KIND_CHARACTER = 0;
/* */
/* */ public static final int KIND_WORD = 1;
/* */
/* */ public static final int KIND_LINE = 2;
/* */
/* */ public static final int KIND_SENTENCE = 3;
/* */
/* */ public static final int KIND_TITLE = 4;
/* */
/* */ private static final int KIND_COUNT = 5;
/* */
/* */ public Object clone()
/* */ {
/* */ try
/* */ {
/* 229 */ return super.clone();
/* */ }
/* */ catch (CloneNotSupportedException e)
/* */ {
/* 233 */ throw new IllegalStateException();
/* */ }
/* */ }
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */ public abstract int first();
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */ public abstract int last();
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */ public abstract int next(int paramInt);
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */ public abstract int next();
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */ public abstract int previous();
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */ public abstract int following(int paramInt);
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */ public int preceding(int offset)
/* */ {
/* 343 */ int pos = following(offset);
/* 344 */ while ((pos >= offset) && (pos != -1))
/* 345 */ pos = previous();
/* 346 */ return pos;
/* */ }
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */ public boolean isBoundary(int offset)
/* */ {
/* 362 */ if (offset == 0) {
/* 363 */ return true;
/* */ }
/* */
/* 366 */ return following(offset - 1) == offset;
/* */ }
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */ public abstract int current();
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */ public abstract CharacterIterator getText();
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */ public void setText(String newText)
/* */ {
/* 400 */ setText(new StringCharacterIterator(newText));
/* */ }
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */ static abstract class BreakIteratorServiceShim
/* */ {
/* */ public abstract Object registerInstance(BreakIterator paramBreakIterator, ULocale paramULocale, int paramInt);
/* */
/* */
/* */
/* */
/* */
/* */
/* */ public abstract boolean unregister(Object paramObject);
/* */
/* */
/* */
/* */
/* */
/* */
/* */ public abstract Locale[] getAvailableLocales();
/* */
/* */
/* */
/* */
/* */
/* */
/* */ public abstract ULocale[] getAvailableULocales();
/* */
/* */
/* */
/* */
/* */
/* */
/* */ public abstract BreakIterator createBreakIterator(ULocale paramULocale, int paramInt);
/* */ }
/* */
/* */
/* */
/* */
/* */
/* */
/* 447 */ private static final SoftReference<?>[] iterCache = new SoftReference[5];
/* */
/* */ private static BreakIteratorServiceShim shim;
/* */
/* */ private ULocale validLocale;
/* */ private ULocale actualLocale;
/* */
/* */ public abstract void setText(CharacterIterator paramCharacterIterator);
/* */
/* */ public static BreakIterator getWordInstance()
/* */ {
/* 458 */ return getWordInstance(ULocale.getDefault());
/* */ }
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */ public static BreakIterator getWordInstance(Locale where)
/* */ {
/* 470 */ return getBreakInstance(ULocale.forLocale(where), 1);
/* */ }
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */ public static BreakIterator getWordInstance(ULocale where)
/* */ {
/* 482 */ return getBreakInstance(where, 1);
/* */ }
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */ public static BreakIterator getLineInstance()
/* */ {
/* 495 */ return getLineInstance(ULocale.getDefault());
/* */ }
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */ public static BreakIterator getLineInstance(Locale where)
/* */ {
/* 508 */ return getBreakInstance(ULocale.forLocale(where), 2);
/* */ }
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */ public static BreakIterator getLineInstance(ULocale where)
/* */ {
/* 521 */ return getBreakInstance(where, 2);
/* */ }
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */ public static BreakIterator getCharacterInstance()
/* */ {
/* 534 */ return getCharacterInstance(ULocale.getDefault());
/* */ }
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */ public static BreakIterator getCharacterInstance(Locale where)
/* */ {
/* 547 */ return getBreakInstance(ULocale.forLocale(where), 0);
/* */ }
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */ public static BreakIterator getCharacterInstance(ULocale where)
/* */ {
/* 560 */ return getBreakInstance(where, 0);
/* */ }
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */ public static BreakIterator getSentenceInstance()
/* */ {
/* 572 */ return getSentenceInstance(ULocale.getDefault());
/* */ }
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */ public static BreakIterator getSentenceInstance(Locale where)
/* */ {
/* 583 */ return getBreakInstance(ULocale.forLocale(where), 3);
/* */ }
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */ public static BreakIterator getSentenceInstance(ULocale where)
/* */ {
/* 594 */ return getBreakInstance(where, 3);
/* */ }
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */ public static BreakIterator getTitleInstance()
/* */ {
/* 608 */ return getTitleInstance(ULocale.getDefault());
/* */ }
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */ public static BreakIterator getTitleInstance(Locale where)
/* */ {
/* 622 */ return getBreakInstance(ULocale.forLocale(where), 4);
/* */ }
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */ public static BreakIterator getTitleInstance(ULocale where)
/* */ {
/* 636 */ return getBreakInstance(where, 4);
/* */ }
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */ public static Object registerInstance(BreakIterator iter, Locale locale, int kind)
/* */ {
/* 650 */ return registerInstance(iter, ULocale.forLocale(locale), kind);
/* */ }
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */ public static Object registerInstance(BreakIterator iter, ULocale locale, int kind)
/* */ {
/* 666 */ if (iterCache[kind] != null) {
/* 667 */ BreakIteratorCache cache = (BreakIteratorCache)iterCache[kind].get();
/* 668 */ if ((cache != null) &&
/* 669 */ (cache.getLocale().equals(locale))) {
/* 670 */ iterCache[kind] = null;
/* */ }
/* */ }
/* */
/* 674 */ return getShim().registerInstance(iter, locale, kind);
/* */ }
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */ public static boolean unregister(Object key)
/* */ {
/* 686 */ if (key == null) {
/* 687 */ throw new IllegalArgumentException("registry key must not be null");
/* */ }
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* 698 */ if (shim != null)
/* */ {
/* */
/* */
/* */
/* 703 */ for (int kind = 0; kind < 5; kind++) {
/* 704 */ iterCache[kind] = null;
/* */ }
/* 706 */ return shim.unregister(key);
/* */ }
/* 708 */ return false;
/* */ }
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */ /**
/* */ * @deprecated
/* */ */
/* */ public static BreakIterator getBreakInstance(ULocale where, int kind)
/* */ {
/* 722 */ if (iterCache[kind] != null) {
/* 723 */ BreakIteratorCache cache = (BreakIteratorCache)iterCache[kind].get();
/* 724 */ if ((cache != null) &&
/* 725 */ (cache.getLocale().equals(where))) {
/* 726 */ return cache.createBreakInstance();
/* */ }
/* */ }
/* */
/* */
/* */
/* 732 */ BreakIterator result = getShim().createBreakIterator(where, kind);
/* */
/* 734 */ BreakIteratorCache cache = new BreakIteratorCache(where, result);
/* 735 */ iterCache[kind] = new SoftReference(cache);
/* 736 */ return result;
/* */ }
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */ public static synchronized Locale[] getAvailableLocales()
/* */ {
/* 749 */ return getShim().getAvailableLocales();
/* */ }
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */ public static synchronized ULocale[] getAvailableULocales()
/* */ {
/* 762 */ return getShim().getAvailableULocales();
/* */ }
/* */
/* */
/* */
/* */ private static final class BreakIteratorCache
/* */ {
/* */ BreakIteratorCache(ULocale where, BreakIterator iter)
/* */ {
/* 771 */ this.where = where;
/* 772 */ this.iter = ((BreakIterator)iter.clone());
/* */ }
/* */
/* */ ULocale getLocale() {
/* 776 */ return this.where;
/* */ }
/* */
/* */ BreakIterator createBreakInstance() {
/* 780 */ return (BreakIterator)this.iter.clone();
/* */ }
/* */
/* */
/* */
/* */
/* */ private BreakIterator iter;
/* */
/* */
/* */
/* */ private ULocale where;
/* */ }
/* */
/* */
/* */
/* */
/* */ private static BreakIteratorServiceShim getShim()
/* */ {
/* 798 */ if (shim == null) {
/* */ try {
/* 800 */ Class<?> cls = Class.forName("com.ibm.icu.text.BreakIteratorFactory");
/* 801 */ shim = (BreakIteratorServiceShim)cls.newInstance();
/* */ }
/* */ catch (MissingResourceException e)
/* */ {
/* 805 */ throw e;
/* */ }
/* */ catch (Exception e)
/* */ {
/* 809 */ if (DEBUG) {
/* 810 */ e.printStackTrace();
/* */ }
/* 812 */ throw new RuntimeException(e.getMessage());
/* */ }
/* */ }
/* */
/* 816 */ return shim;
/* */ }
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */ public final ULocale getLocale(ULocale.Type type)
/* */ {
/* 844 */ return type == ULocale.ACTUAL_LOCALE ? this.actualLocale : this.validLocale;
/* */ }
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */ final void setLocale(ULocale valid, ULocale actual)
/* */ {
/* 866 */ if ((valid == null ? 1 : 0) != (actual == null ? 1 : 0))
/* */ {
/* 868 */ throw new IllegalArgumentException();
/* */ }
/* */
/* */
/* */
/* 873 */ this.validLocale = valid;
/* 874 */ this.actualLocale = actual;
/* */ }
/* */ }
/* Location: C:\Users\Ethan\Desktop\FontZip\FontTool\sfnttool.jar!\com\ibm\icu\text\BreakIterator.class
* Java compiler version: 5 (49.0)
* JD-Core Version: 0.7.1
*/