Home | History | Annotate | Download | only in text
      1 /* GENERATED SOURCE. DO NOT MODIFY. */
      2 //  2016 and later: Unicode, Inc. and others.
      3 // License & terms of use: http://www.unicode.org/copyright.html#License
      4 /*
      5  *******************************************************************************
      6  * Copyright (C) 1996-2014, International Business Machines Corporation and    *
      7  * others. All Rights Reserved.                                                *
      8  *******************************************************************************
      9  */
     10 
     11 
     12 // NOTE:  This class is identical to java.text.StringCharacterIterator
     13 // in JDK 1.2.  It's copied here because the JDK 1.1 version of
     14 // StringCharacterIterator has a bug that prevents it from working
     15 // right with RuleBasedBreakIterator.  This class is unnecessary
     16 // when using RuleBasedBreakIterator with JDK 1.2.
     17 
     18 package android.icu.text;
     19 import java.text.CharacterIterator;
     20 
     21 import android.icu.util.ICUCloneNotSupportedException;
     22 
     23 /**
     24  * <code>StringCharacterIterator</code> implements the
     25  * <code>CharacterIterater</code> protocol for a <code>String</code>.
     26  * The <code>StringCharacterIterator</code> class iterates over the
     27  * entire <code>String</code>.
     28  *
     29  * @see CharacterIterator
     30  * @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.
     31  * @hide Only a subset of ICU is exposed in Android
     32  */
     33 @Deprecated
     34 ///CLOVER:OFF
     35 public final class StringCharacterIterator implements CharacterIterator
     36 {
     37     private String text;
     38     private int begin;
     39     private int end;
     40     // invariant: begin <= pos <= end
     41     private int pos;
     42 
     43     /**
     44      * Constructs an iterator with an initial index of 0.
     45      * @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.
     46      */
     47     @Deprecated
     48     public StringCharacterIterator(String text)
     49     {
     50         this(text, 0);
     51     }
     52 
     53     /**
     54      * Constructs an iterator with the specified initial index.
     55      *
     56      * @param  text   The String to be iterated over
     57      * @param  pos    Initial iterator position
     58      * @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.
     59      */
     60     @Deprecated
     61     public StringCharacterIterator(String text, int pos)
     62     {
     63     this(text, 0, text.length(), pos);
     64     }
     65 
     66     /**
     67      * Constructs an iterator over the given range of the given string, with the
     68      * index set at the specified position.
     69      *
     70      * @param  text   The String to be iterated over
     71      * @param  begin  Index of the first character
     72      * @param  end    Index of the character following the last character
     73      * @param  pos    Initial iterator position
     74      * @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.
     75      */
     76     @Deprecated
     77     public StringCharacterIterator(String text, int begin, int end, int pos) {
     78         if (text == null) {
     79             throw new NullPointerException();
     80         }
     81         this.text = text;
     82 
     83         if (begin < 0 || begin > end || end > text.length()) {
     84             throw new IllegalArgumentException("Invalid substring range");
     85         }
     86 
     87         if (pos < begin || pos > end) {
     88             throw new IllegalArgumentException("Invalid position");
     89         }
     90 
     91         this.begin = begin;
     92         this.end = end;
     93         this.pos = pos;
     94     }
     95 
     96     /**
     97      * Reset this iterator to point to a new string.  This package-visible
     98      * method is used by other java.text classes that want to avoid allocating
     99      * new StringCharacterIterator objects every time their setText method
    100      * is called.
    101      *
    102      * @param  text   The String to be iterated over
    103      * @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.
    104      */
    105     @Deprecated
    106     public void setText(String text) {
    107         if (text == null) {
    108             throw new NullPointerException();
    109         }
    110         this.text = text;
    111         this.begin = 0;
    112         this.end = text.length();
    113         this.pos = 0;
    114     }
    115 
    116     /**
    117      * Implements CharacterIterator.first() for String.
    118      * @see CharacterIterator#first
    119      * @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.
    120      */
    121     @Deprecated
    122     public char first()
    123     {
    124         pos = begin;
    125         return current();
    126     }
    127 
    128     /**
    129      * Implements CharacterIterator.last() for String.
    130      * @see CharacterIterator#last
    131      * @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.
    132      */
    133     @Deprecated
    134     public char last()
    135     {
    136         if (end != begin) {
    137             pos = end - 1;
    138         } else {
    139             pos = end;
    140         }
    141         return current();
    142      }
    143 
    144     /**
    145      * Implements CharacterIterator.setIndex() for String.
    146      * @see CharacterIterator#setIndex
    147      * @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.
    148      */
    149     @Deprecated
    150     public char setIndex(int p)
    151     {
    152     if (p < begin || p > end) {
    153             throw new IllegalArgumentException("Invalid index");
    154     }
    155         pos = p;
    156         return current();
    157     }
    158 
    159     /**
    160      * Implements CharacterIterator.current() for String.
    161      * @see CharacterIterator#current
    162      * @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.
    163      */
    164     @Deprecated
    165     public char current()
    166     {
    167         if (pos >= begin && pos < end) {
    168             return text.charAt(pos);
    169         }
    170         else {
    171             return DONE;
    172         }
    173     }
    174 
    175     /**
    176      * Implements CharacterIterator.next() for String.
    177      * @see CharacterIterator#next
    178      * @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.
    179      */
    180     @Deprecated
    181     public char next()
    182     {
    183         if (pos < end - 1) {
    184             pos++;
    185             return text.charAt(pos);
    186         }
    187         else {
    188             pos = end;
    189             return DONE;
    190         }
    191     }
    192 
    193     /**
    194      * Implements CharacterIterator.previous() for String.
    195      * @see CharacterIterator#previous
    196      * @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.
    197      */
    198     @Deprecated
    199     public char previous()
    200     {
    201         if (pos > begin) {
    202             pos--;
    203             return text.charAt(pos);
    204         }
    205         else {
    206             return DONE;
    207         }
    208     }
    209 
    210     /**
    211      * Implements CharacterIterator.getBeginIndex() for String.
    212      * @see CharacterIterator#getBeginIndex
    213      * @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.
    214      */
    215     @Deprecated
    216     public int getBeginIndex()
    217     {
    218         return begin;
    219     }
    220 
    221     /**
    222      * Implements CharacterIterator.getEndIndex() for String.
    223      * @see CharacterIterator#getEndIndex
    224      * @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.
    225      */
    226     @Deprecated
    227     public int getEndIndex()
    228     {
    229         return end;
    230     }
    231 
    232     /**
    233      * Implements CharacterIterator.getIndex() for String.
    234      * @see CharacterIterator#getIndex
    235      * @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.
    236      */
    237     @Deprecated
    238     public int getIndex()
    239     {
    240         return pos;
    241     }
    242 
    243     /**
    244      * Compares the equality of two StringCharacterIterator objects.
    245      * @param obj the StringCharacterIterator object to be compared with.
    246      * @return true if the given obj is the same as this
    247      * StringCharacterIterator object; false otherwise.
    248      * @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.
    249      */
    250     @Deprecated
    251     public boolean equals(Object obj)
    252     {
    253         if (this == obj) {
    254             return true;
    255         }
    256         if (!(obj instanceof StringCharacterIterator)) {
    257             return false;
    258         }
    259 
    260         StringCharacterIterator that = (StringCharacterIterator) obj;
    261 
    262         if (hashCode() != that.hashCode()) {
    263             return false;
    264         }
    265         if (!text.equals(that.text)) {
    266             return false;
    267         }
    268         if (pos != that.pos || begin != that.begin || end != that.end) {
    269             return false;
    270         }
    271         return true;
    272     }
    273 
    274     /**
    275      * Computes a hashcode for this iterator.
    276      * @return A hash code
    277      * @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.
    278      */
    279     @Deprecated
    280     public int hashCode()
    281     {
    282         return text.hashCode() ^ pos ^ begin ^ end;
    283     }
    284 
    285     /**
    286      * Creates a copy of this iterator.
    287      * @return A copy of this
    288      * @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.
    289      */
    290     @Deprecated
    291     public Object clone()
    292     {
    293         try {
    294             StringCharacterIterator other
    295             = (StringCharacterIterator) super.clone();
    296             return other;
    297         }
    298         catch (CloneNotSupportedException e) {
    299             throw new ICUCloneNotSupportedException(e);
    300         }
    301     }
    302 
    303 }
    304 ///CLOVER:ON
    305