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 11package android.icu.impl; 12 13import 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 22public 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}