com.ibm.icu.impl.coll.IterCollationIterator 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) 2012-2014, International Business Machines
* Corporation and others. All Rights Reserved.
*******************************************************************************
* IterCollationIterator.java, ported from uitercollationiterator.h/.cpp
*
* C++ version created on: 2012sep23 (from utf16collationiterator.h)
* created by: Markus W. Scherer
*/
package com.ibm.icu.impl.coll;
import com.ibm.icu.text.UCharacterIterator;
/**
* UCharIterator-based collation element and character iterator.
* Handles normalized text, with length or NUL-terminated.
* Unnormalized text is handled by a subclass.
*/
public class IterCollationIterator extends CollationIterator {
public IterCollationIterator(CollationData d, boolean numeric, UCharacterIterator ui) {
super(d, numeric);
iter = ui;
}
@Override
public void resetToOffset(int newOffset) {
reset();
iter.setIndex(newOffset);
}
@Override
public int getOffset() {
return iter.getIndex();
}
@Override
public int nextCodePoint() {
return iter.nextCodePoint();
}
@Override
public int previousCodePoint() {
return iter.previousCodePoint();
}
@Override
protected long handleNextCE32() {
int c = iter.next();
if(c < 0) {
return NO_CP_AND_CE32;
}
return makeCodePointAndCE32Pair(c, trie.getFromU16SingleLead((char)c));
}
@Override
protected char handleGetTrailSurrogate() {
int trail = iter.next();
if(!isTrailSurrogate(trail) && trail >= 0) { iter.previous(); }
return (char)trail;
}
@Override
protected void forwardNumCodePoints(int num) {
iter.moveCodePointIndex(num);
}
@Override
protected void backwardNumCodePoints(int num) {
iter.moveCodePointIndex(-num);
}
protected UCharacterIterator iter;
}