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) 2012-2014, International Business Machines 7 * Corporation and others. All Rights Reserved. 8 ******************************************************************************* 9 * IterCollationIterator.java, ported from uitercollationiterator.h/.cpp 10 * 11 * C++ version created on: 2012sep23 (from utf16collationiterator.h) 12 * created by: Markus W. Scherer 13 */ 14 15 package android.icu.impl.coll; 16 17 import android.icu.text.UCharacterIterator; 18 19 /** 20 * UCharIterator-based collation element and character iterator. 21 * Handles normalized text, with length or NUL-terminated. 22 * Unnormalized text is handled by a subclass. 23 * @hide Only a subset of ICU is exposed in Android 24 */ 25 public class IterCollationIterator extends CollationIterator { 26 public IterCollationIterator(CollationData d, boolean numeric, UCharacterIterator ui) { 27 super(d, numeric); 28 iter = ui; 29 } 30 31 @Override 32 public void resetToOffset(int newOffset) { 33 reset(); 34 iter.setIndex(newOffset); 35 } 36 37 @Override 38 public int getOffset() { 39 return iter.getIndex(); 40 } 41 42 @Override 43 public int nextCodePoint() { 44 return iter.nextCodePoint(); 45 } 46 47 @Override 48 public int previousCodePoint() { 49 return iter.previousCodePoint(); 50 } 51 52 @Override 53 protected long handleNextCE32() { 54 int c = iter.next(); 55 if(c < 0) { 56 return NO_CP_AND_CE32; 57 } 58 return makeCodePointAndCE32Pair(c, trie.getFromU16SingleLead((char)c)); 59 } 60 61 @Override 62 protected char handleGetTrailSurrogate() { 63 int trail = iter.next(); 64 if(!isTrailSurrogate(trail) && trail >= 0) { iter.previous(); } 65 return (char)trail; 66 } 67 68 @Override 69 protected void forwardNumCodePoints(int num) { 70 iter.moveCodePointIndex(num); 71 } 72 73 @Override 74 protected void backwardNumCodePoints(int num) { 75 iter.moveCodePointIndex(-num); 76 } 77 78 protected UCharacterIterator iter; 79 } 80