com.ibm.icu.impl.UCharArrayIterator Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of icu4j Show documentation
Show all versions of icu4j Show documentation
International Component for Unicode for Java (ICU4J) is a mature, widely used Java library
providing Unicode and Globalization support
// © 2016 and later: Unicode, Inc. and others.
// License & terms of use: http://www.unicode.org/copyright.html
/**
*******************************************************************************
* Copyright (C) 1996-2010, International Business Machines Corporation and *
* others. All Rights Reserved. *
*******************************************************************************
*/
package com.ibm.icu.impl;
import com.ibm.icu.text.UCharacterIterator;
/**
* @author Doug Felt
*
*/
public final class UCharArrayIterator extends UCharacterIterator {
private final char[] text;
private final int start;
private final int limit;
private int pos;
public UCharArrayIterator(char[] text, int start, int limit) {
if (start < 0 || limit > text.length || start > limit) {
throw new IllegalArgumentException("start: " + start + " or limit: "
+ limit + " out of range [0, "
+ text.length + ")");
}
this.text = text;
this.start = start;
this.limit = limit;
this.pos = start;
}
@Override
public int current() {
return pos < limit ? text[pos] : DONE;
}
@Override
public int getLength() {
return limit - start;
}
@Override
public int getIndex() {
return pos - start;
}
@Override
public int next() {
return pos < limit ? text[pos++] : DONE;
}
@Override
public int previous() {
return pos > start ? text[--pos] : DONE;
}
@Override
public void setIndex(int index) {
if (index < 0 || index > limit - start) {
throw new IndexOutOfBoundsException("index: " + index +
" out of range [0, "
+ (limit - start) + ")");
}
pos = start + index;
}
@Override
public int getText(char[] fillIn, int offset) {
int len = limit - start;
System.arraycopy(text, start, fillIn, offset, len);
return len;
}
/**
* Creates a copy of this iterator, does not clone the underlying
* Replaceable
object
* @return copy of this iterator
*/
@Override
public Object clone(){
try {
return super.clone();
} catch (CloneNotSupportedException e) {
return null; // never invoked
}
}
}