Loading...
Searching...
No Matches
icu::UnicodeSetIterator Class Referencefinal

UnicodeSetIterator iterates over the contents of a UnicodeSet. More...

`#include <usetiter.h>`

Inheritance diagram for icu::UnicodeSetIterator:

## Public Member Functions

| UnicodeSetIterator (const UnicodeSet &set)
| Create an iterator over the given set.
| UnicodeSetIterator ()
| Create an iterator over nothing.
virtual | ~UnicodeSetIterator ()
| Destructor.
UBool | isString () const
| Returns true if the current element is a string.
UChar32 | getCodepoint () const
| Returns the current code point, if isString() returned false.
UChar32 | getCodepointEnd () const
| Returns the end of the current code point range, if isString() returned false and nextRange() was called.
const UnicodeString & | getString ()
| Returns the current string, if isString() returned true.
UnicodeSetIterator & | skipToStrings ()
| Skips over the remaining code points/ranges, if any.
UBool | next ()
| Advances the iteration position to the next element in the set, which can be either a single code point or a string.
UBool | nextRange ()
| Returns the next element in the set, either a code point range or a string.
void | reset (const UnicodeSet &set)
| Sets this iterator to visit the elements of the given set and resets it to the start of that set.
void | reset ()
| Resets this iterator to the start of the set.
virtual UClassID | getDynamicClassID () const override
| ICU "poor man's RTTI", returns a UClassID for the actual class.
Public Member Functions inherited from icu::UObject
virtual | ~UObject ()
| Destructor.

## Static Public Member Functions

static UClassID | getStaticClassID ()
| ICU "poor man's RTTI", returns a UClassID for this class.

## Detailed Description

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 UnicodeSet, if any.

This class is not intended for public subclassing.

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

    UnicodeSetIterator it(set);
    while (it.next()) {
        processItem(it.getString());
    }

Each item in the set is accessed as a string. Set elements consisting of single code points are returned as strings containing just the one code point.

To iterate over code point ranges, instead of individual code points, use a loop like this:

    UnicodeSetIterator it(set);
    while (it.nextRange()) {
      if (it.isString()) {
        processString(it.getString());
      } else {
        processCodepointRange(it.getCodepoint(), it.getCodepointEnd());
      }
    }

To iterate over only the strings, start with `skipToStrings()`.

Author
  M. Davis

Stable
  ICU 2.4

Definition at line 67 of file usetiter.h.

## Constructor & Destructor Documentation

## UnicodeSetIterator() [1/2]

icu::UnicodeSetIterator::UnicodeSetIterator | ( | const UnicodeSet & | set | ) |

Create an iterator over the given set.

The iterator is valid only so long as set is valid.

Parameters

  set | set to iterate over

Stable
  ICU 2.4

Referenced by getDynamicClassID(), and skipToStrings().

## UnicodeSetIterator() [2/2]

icu::UnicodeSetIterator::UnicodeSetIterator | ( |  | ) |

Create an iterator over nothing.

next() and nextRange() return false. This is a convenience constructor allowing the target to be set later.

Stable
  ICU 2.4

## ~UnicodeSetIterator()

virtual icu::UnicodeSetIterator::~UnicodeSetIterator | ( |  | ) |

virtual

Destructor.

Stable
  ICU 2.4

References getCodepoint(), getCodepointEnd(), and isString().

## Member Function Documentation

## getCodepoint()

UChar32 icu::UnicodeSetIterator::getCodepoint | ( |  | ) | const

inline

Returns the current code point, if isString() returned false.

Otherwise returns an undefined result.

Stable
  ICU 2.4

Definition at line 310 of file usetiter.h.

References getCodepoint().

Referenced by getCodepoint(), and ~UnicodeSetIterator().

## getCodepointEnd()

UChar32 icu::UnicodeSetIterator::getCodepointEnd | ( |  | ) | const

inline

Returns the end of the current code point range, if isString() returned false and nextRange() was called.

Otherwise returns an undefined result.

Stable
  ICU 2.4

Definition at line 314 of file usetiter.h.

References getCodepointEnd().

Referenced by getCodepointEnd(), and ~UnicodeSetIterator().

## getDynamicClassID()

virtual UClassID icu::UnicodeSetIterator::getDynamicClassID | ( |  | ) | const

override virtual

ICU "poor man's RTTI", returns a UClassID for the actual class.

Stable
  ICU 2.4

Reimplemented from icu::UObject.

References UnicodeSetIterator().

## getStaticClassID()

UClassID icu::UnicodeSetIterator::getStaticClassID | ( |  | ) |

static

ICU "poor man's RTTI", returns a UClassID for this class.

Stable
  ICU 2.4

## getString()

const UnicodeString & icu::UnicodeSetIterator::getString | ( |  | ) |

Returns the current string, if isString() returned true.

If the current iteration item is a code point, a UnicodeString containing that single code point is returned.

Ownership of the returned string remains with the iterator. The string is guaranteed to remain valid only until the iterator is advanced to the next item, or until the iterator is deleted.

Stable
  ICU 2.4

## isString()

UBool icu::UnicodeSetIterator::isString | ( |  | ) | const

inline

Returns true if the current element is a string.

If so, the caller can retrieve it with getString(). If this method returns false, the current element is a code point or code point range, depending on whether next() or nextRange() was called. Elements of types string and codepoint can both be retrieved with the function getString(). Elements of type codepoint can also be retrieved with getCodepoint(). For ranges, getCodepoint() returns the starting codepoint of the range, and getCodepointEnd() returns the end of the range.

Stable
  ICU 2.4

Definition at line 306 of file usetiter.h.

References isString().

Referenced by isString(), and ~UnicodeSetIterator().

## next()

UBool icu::UnicodeSetIterator::next | ( |  | ) |

Advances the iteration position to the next element in the set, which can be either a single code point or a string.

If there are no more elements in the set, return false.

If isString() == true, the value is a string, otherwise the value is a single code point. Elements of either type can be retrieved with the function getString(), while elements of consisting of a single code point can be retrieved with getCodepoint()

The order of iteration is all code points in sorted order, followed by all strings sorted order. 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.

Stable
  ICU 2.4

## nextRange()

UBool icu::UnicodeSetIterator::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 isString() == true, the value is a string and can be accessed with getString(). Otherwise the value is a range of one or more code points from getCodepoint() to getCodepointeEnd() 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. The value returned from getString() is undefined unless isString() == true. 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.

Stable
  ICU 2.4

## reset() [1/2]

void icu::UnicodeSetIterator::reset | ( |  | ) |

Resets this iterator to the start of the set.

Stable
  ICU 2.4

## reset() [2/2]

void icu::UnicodeSetIterator::reset | ( | const UnicodeSet & | set | ) |

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

  set | the set to iterate over.

Stable
  ICU 2.4

## skipToStrings()

UnicodeSetIterator & icu::UnicodeSetIterator::skipToStrings | ( |  | ) |

inline

Skips over the remaining code points/ranges, if any.

A following call to next() or nextRange() will yield a string, if there is one. No-op if next() would return false, or if it would yield a string anyway.

Returns
  *this

Stable
  ICU 70

See also
  UnicodeSet::strings()

Definition at line 176 of file usetiter.h.

References UnicodeSetIterator().

The documentation for this class was generated from the following file:

- common/unicode/usetiter.h