Home | History | Annotate | Download | only in impl
      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-2010, International Business Machines Corporation and    *
      7 * others. All Rights Reserved.                                                *
      8 *******************************************************************************
      9 */
     10 
     11 package android.icu.impl;
     12 
     13 import android.icu.text.UCharacterIterator;
     14 
     15 
     16 /**
     17  * @author Doug Felt
     18  * @hide Only a subset of ICU is exposed in Android
     19  *
     20  */
     21 
     22 public final class UCharArrayIterator extends UCharacterIterator {
     23     private final char[] text;
     24     private final int start;
     25     private final int limit;
     26     private int pos;
     27 
     28     public UCharArrayIterator(char[] text, int start, int limit) {
     29         if (start < 0 || limit > text.length || start > limit) {
     30             throw new IllegalArgumentException("start: " + start + " or limit: "
     31                                                + limit + " out of range [0, "
     32                                                + text.length + ")");
     33         }
     34         this.text = text;
     35         this.start = start;
     36         this.limit = limit;
     37 
     38         this.pos = start;
     39     }
     40 
     41     @Override
     42     public int current() {
     43         return pos < limit ? text[pos] : DONE;
     44     }
     45 
     46     @Override
     47     public int getLength() {
     48         return limit - start;
     49     }
     50 
     51     @Override
     52     public int getIndex() {
     53         return pos - start;
     54     }
     55 
     56     @Override
     57     public int next() {
     58         return pos < limit ? text[pos++] : DONE;
     59     }
     60 
     61     @Override
     62     public int previous() {
     63         return pos > start ? text[--pos] : DONE;
     64     }
     65 
     66     @Override
     67     public void setIndex(int index) {
     68         if (index < 0 || index > limit - start) {
     69             throw new IndexOutOfBoundsException("index: " + index +
     70                                                 " out of range [0, "
     71                                                 + (limit - start) + ")");
     72         }
     73         pos = start + index;
     74     }
     75 
     76     @Override
     77     public int getText(char[] fillIn, int offset) {
     78         int len = limit - start;
     79         System.arraycopy(text, start, fillIn, offset, len);
     80         return len;
     81     }
     82 
     83     /**
     84      * Creates a copy of this iterator, does not clone the underlying
     85      * <code>Replaceable</code>object
     86      * @return copy of this iterator
     87      */
     88     @Override
     89     public Object clone(){
     90         try {
     91           return super.clone();
     92         } catch (CloneNotSupportedException e) {
     93             return null; // never invoked
     94         }
     95     }
     96 }