com.ibm.icu.impl.UCharacterIteratorWrapper 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
/*
*******************************************************************************
* Copyright (C) 1996-2010, International Business Machines Corporation and *
* others. All Rights Reserved. *
*******************************************************************************
*/
package com.ibm.icu.impl;
import java.text.CharacterIterator;
import com.ibm.icu.text.UCharacterIterator;
/**
* This class is a wrapper around UCharacterIterator and implements the
* CharacterIterator protocol
* @author ram
*/
public class UCharacterIteratorWrapper implements CharacterIterator{
public UCharacterIteratorWrapper(UCharacterIterator iter){
this.iterator = iter;
}
private UCharacterIterator iterator;
/**
* Sets the position to getBeginIndex() and returns the character at that
* position.
* @return the first character in the text, or DONE if the text is empty
* @see #getBeginIndex()
*/
public char first(){
//UCharacterIterator always iterates from 0 to length
iterator.setToStart();
return (char)iterator.current();
}
/**
* Sets the position to getEndIndex()-1 (getEndIndex() if the text is empty)
* and returns the character at that position.
* @return the last character in the text, or DONE if the text is empty
* @see #getEndIndex()
*/
public char last(){
iterator.setToLimit();
return (char)iterator.previous();
}
/**
* Gets the character at the current position (as returned by getIndex()).
* @return the character at the current position or DONE if the current
* position is off the end of the text.
* @see #getIndex()
*/
public char current(){
return (char) iterator.current();
}
/**
* Increments the iterator's index by one and returns the character
* at the new index. If the resulting index is greater or equal
* to getEndIndex(), the current index is reset to getEndIndex() and
* a value of DONE is returned.
* @return the character at the new position or DONE if the new
* position is off the end of the text range.
*/
public char next(){
//pre-increment
iterator.next();
return (char) iterator.current();
}
/**
* Decrements the iterator's index by one and returns the character
* at the new index. If the current index is getBeginIndex(), the index
* remains at getBeginIndex() and a value of DONE is returned.
* @return the character at the new position or DONE if the current
* position is equal to getBeginIndex().
*/
public char previous(){
//pre-decrement
return (char) iterator.previous();
}
/**
* Sets the position to the specified position in the text and returns that
* character.
* @param position the position within the text. Valid values range from
* getBeginIndex() to getEndIndex(). An IllegalArgumentException is thrown
* if an invalid value is supplied.
* @return the character at the specified position or DONE if the specified position is equal to getEndIndex()
*/
public char setIndex(int position){
iterator.setIndex(position);
return (char) iterator.current();
}
/**
* Returns the start index of the text.
* @return the index at which the text begins.
*/
public int getBeginIndex(){
//UCharacterIterator always starts from 0
return 0;
}
/**
* Returns the end index of the text. This index is the index of the first
* character following the end of the text.
* @return the index after the last character in the text
*/
public int getEndIndex(){
return iterator.getLength();
}
/**
* Returns the current index.
* @return the current index.
*/
public int getIndex(){
return iterator.getIndex();
}
/**
* Create a copy of this iterator
* @return A copy of this
*/
public Object clone(){
try {
UCharacterIteratorWrapper result = (UCharacterIteratorWrapper) super.clone();
result.iterator = (UCharacterIterator)this.iterator.clone();
return result;
} catch (CloneNotSupportedException e) {
return null; // only invoked if bad underlying character iterator
}
}
}