com.ibm.icu.text
Class UnicodeSetIterator

java.lang.Object
  extended by com.ibm.icu.text.UnicodeSetIterator

public class UnicodeSetIterator
extends Object

UnicodeSetIterator iterates over the contents of a UnicodeSet. It iterates over either code points or code point ranges. After all code points or ranges have been returned, it returns the multicharacter strings of the UnicodSet, if any.

To iterate over code points and multicharacter strings, use a loop like this:

 for (UnicodeSetIterator it = new UnicodeSetIterator(set); it.next();) {
   processString(it.getString());
 }
 

To iterate over code point ranges, use a loop like this:

 for (UnicodeSetIterator it = new UnicodeSetIterator(set); it.nextRange();) {
   if (it.codepoint != UnicodeSetIterator.IS_STRING) {
     processCodepointRange(it.codepoint, it.codepointEnd);
   } else {
     processString(it.getString());
   }
 }
 

Author:
M. Davis
Status:
Stable ICU 2.0.

Field Summary
 int codepoint
          Current code point, or the special value IS_STRING, if the iterator points to a string.
 int codepointEnd
          When iterating over ranges using nextRange(), codepointEnd contains the inclusive end of the iteration range, if codepoint !
protected  int endElement
          Deprecated. This API is ICU internal only.
static int IS_STRING
          Value of codepoint if the iterator points to a string.
protected  int nextElement
          Deprecated. This API is ICU internal only.
 String string
          If codepoint == IS_STRING, then string points to the current string.
 
Constructor Summary
UnicodeSetIterator()
          Create an iterator over nothing.
UnicodeSetIterator(UnicodeSet set)
          Create an iterator over the given set.
 
Method Summary
 String getString()
          Gets the current string from the iterator.
protected  void loadRange(int aRange)
          Deprecated. This API is ICU internal only.
 boolean next()
          Returns the next element in the set, either a single code point or a string.
 boolean nextRange()
          Returns the next element in the set, either a code point range or a string.
 void reset()
          Resets this iterator to the start of the set.
 void reset(UnicodeSet uset)
          Sets this iterator to visit the elements of the given set and resets it to the start of that set.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

IS_STRING

public static int IS_STRING
Value of codepoint if the iterator points to a string. If codepoint == IS_STRING, then examine string for the current iteration result.

Status:
Stable ICU 2.0.

codepoint

public int codepoint
Current code point, or the special value IS_STRING, if the iterator points to a string.

Status:
Stable ICU 2.0.

codepointEnd

public int codepointEnd
When iterating over ranges using nextRange(), codepointEnd contains the inclusive end of the iteration range, if codepoint != IS_STRING. If iterating over code points using next(), or if codepoint == IS_STRING, then the value of codepointEnd is undefined.

Status:
Stable ICU 2.0.

string

public String string
If codepoint == IS_STRING, then string points to the current string. If codepoint != IS_STRING, the value of string is undefined.

Status:
Stable ICU 2.0.

endElement

protected int endElement
Deprecated. This API is ICU internal only.
Status:
Internal. This API is ICU internal only.

nextElement

protected int nextElement
Deprecated. This API is ICU internal only.
Status:
Internal. This API is ICU internal only.
Constructor Detail

UnicodeSetIterator

public UnicodeSetIterator(UnicodeSet set)
Create an iterator over the given set.

Parameters:
set - set to iterate over
Status:
Stable ICU 2.0.

UnicodeSetIterator

public UnicodeSetIterator()
Create an iterator over nothing. next() and nextRange() return false. This is a convenience constructor allowing the target to be set later.

Status:
Stable ICU 2.0.
Method Detail

next

public boolean next()
Returns the next element in the set, either a single code point or a string. If there are no more elements in the set, return false. If codepoint == IS_STRING, the value is a string in the string field. Otherwise the value is a single code point in the codepoint field.

The order of iteration is all code points in sorted order, followed by all strings sorted order. codepointEnd is undefined after calling this method. string is undefined unless codepoint == IS_STRING. Do not mix calls to next() and nextRange() without calling reset() between them. The results of doing so are undefined.

Returns:
true if there was another element in the set and this object contains the element.
Status:
Stable ICU 2.0.

nextRange

public boolean nextRange()
Returns the next element in the set, either a code point range or a string. If there are no more elements in the set, return false. If codepoint == IS_STRING, the value is a string in the string field. Otherwise the value is a range of one or more code points from codepoint to codepointeEnd inclusive.

The order of iteration is all code points ranges in sorted order, followed by all strings sorted order. Ranges are disjoint and non-contiguous. string is undefined unless codepoint == IS_STRING. Do not mix calls to next() and nextRange() without calling reset() between them. The results of doing so are undefined.

Returns:
true if there was another element in the set and this object contains the element.
Status:
Stable ICU 2.0.

reset

public void reset(UnicodeSet uset)
Sets this iterator to visit the elements of the given set and resets it to the start of that set. The iterator is valid only so long as set is valid.

Parameters:
uset - the set to iterate over.
Status:
Stable ICU 2.0.

reset

public void reset()
Resets this iterator to the start of the set.

Status:
Stable ICU 2.0.

getString

public String getString()
Gets the current string from the iterator. Only use after calling next(), not nextRange().

Status:
Draft ICU 4.0.

loadRange

protected void loadRange(int aRange)
Deprecated. This API is ICU internal only.

Status:
Internal. This API is ICU internal only.


Copyright (c) 2009 IBM Corporation and others.