ICU 56.1: icu::UnicodeSetIterator Class Reference

ICU 56.1 56.1

- Main Page
- Related Pages
- Modules
- Namespaces
- Data Structures
- Files

- Data Structures
- Data Structure Index
- Class Hierarchy
- Data Fields

Public Member Functions | Static Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes
icu::UnicodeSetIterator Class Reference

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. More...
| UnicodeSetIterator ()
| Create an iterator over nothing. More...
virtual | ~UnicodeSetIterator ()
| Destructor. More...
UBool | isString () const
| Returns true if the current element is a string. More...
UChar32 | getCodepoint () const
| Returns the current code point, if `isString()` returned false. More...
UChar32 | getCodepointEnd () const
| Returns the end of the current code point range, if `isString()` returned false and `nextRange()` was called. More...
const UnicodeString & | getString ()
| Returns the current string, if `isString()` returned true. More...
UBool | next ()
| Advances the iteration position to the next element in the set, which can be either a single code point or a string. More...
UBool | nextRange ()
| Returns the next element in the set, either a code point range or a string. More...
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. More...
void | reset ()
| Resets this iterator to the start of the set. More...
virtual UClassID | getDynamicClassID () const
| ICU "poor man's RTTI", returns a UClassID for the actual class. More...
Public Member Functions inherited from icu::UObject
virtual | ~UObject ()
| Destructor. More...

## Static Public Member Functions
static UClassID | getStaticClassID ()
| ICU "poor man's RTTI", returns a UClassID for this class. More...

## Protected Types
enum | { IS_STRING = -1 }
| Value of `codepoint` if the iterator points to a string. More...

## Protected Member Functions
| UnicodeSetIterator (const UnicodeSetIterator &)
| Copy constructor. More...
UnicodeSetIterator & | operator= (const UnicodeSetIterator &)
| Assignment operator. More...
virtual void | loadRange (int32_t range)
| Load range. More...

## Protected Attributes
UChar32 | codepoint
| Current code point, or the special value `IS_STRING`, if the iterator points to a string. More...
UChar32 | codepointEnd
| When iterating over ranges using `nextRange()`, `codepointEnd` contains the inclusive end of the iteration range, if `codepoint != IS_STRING`. More...
const UnicodeString * | string
| If `codepoint == IS_STRING`, then `string` points to the current string. More...
const UnicodeSet * | set
| The set. More...
int32_t | endRange
| End range. More...
int32_t | range
| Range. More...
int32_t | endElement
| End element. More...
int32_t | nextElement
| Next element. More...
int32_t | nextString
| Next string. More...
int32_t | stringCount
| String count. More...
UnicodeString * | cpString
| Points to the string to use when the caller asks for a string and the current iteration item is a code point, not a string. More...

## 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 to be subclassed. Consider any fields or methods declared as "protected" to be private. The use of protected in this class is an artifact of history.

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());
      }
    }

Author
  M. Davis

Stable:
  ICU 2.4

Definition at line 61 of file usetiter.h.

## Member Enumeration Documentation

anonymous enum
| protected

Value of `codepoint` if the iterator points to a string.

If `codepoint == IS_STRING`, then examine `string` for the current iteration result.

Stable:
  ICU 2.4

Definition at line 71 of file usetiter.h.

## Constructor & Destructor Documentation

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

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

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

Destructor.

Stable:
  ICU 2.4

icu::UnicodeSetIterator::UnicodeSetIterator | ( | const UnicodeSetIterator & |  | ) |
| protected

Copy constructor.

Disallowed.

Stable:
  ICU 2.4

## Member Function Documentation

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 307 of file usetiter.h.

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 311 of file usetiter.h.

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

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

Stable:
  ICU 2.4

Reimplemented from icu::UObject.

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

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

Stable:
  ICU 2.4

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

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 303 of file usetiter.h.

virtual void icu::UnicodeSetIterator::loadRange | ( | int32_t | range | ) |
| protectedvirtual

Load range.

Stable:
  ICU 2.4

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

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

UnicodeSetIterator& icu::UnicodeSetIterator::operator= | ( | const UnicodeSetIterator & |  | ) |
| protected

Assignment operator.

Disallowed.

Stable:
  ICU 2.4

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

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

Resets this iterator to the start of the set.

Stable:
  ICU 2.4

## Field Documentation

UChar32 icu::UnicodeSetIterator::codepoint
| protected

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

Stable:
  ICU 2.4

Definition at line 78 of file usetiter.h.

UChar32 icu::UnicodeSetIterator::codepointEnd
| protected

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.

Stable:
  ICU 2.4

Definition at line 89 of file usetiter.h.

UnicodeString* icu::UnicodeSetIterator::cpString
| protected

Points to the string to use when the caller asks for a string and the current iteration item is a code point, not a string.

Internal:
  Do not use. This API is for internal use only.

Definition at line 284 of file usetiter.h.

int32_t icu::UnicodeSetIterator::endElement
| protected

End element.

Stable:
  ICU 2.4

Definition at line 264 of file usetiter.h.

int32_t icu::UnicodeSetIterator::endRange
| protected

End range.

Stable:
  ICU 2.4

Definition at line 256 of file usetiter.h.

int32_t icu::UnicodeSetIterator::nextElement
| protected

Next element.

Stable:
  ICU 2.4

Definition at line 268 of file usetiter.h.

int32_t icu::UnicodeSetIterator::nextString
| protected

Next string.

Stable:
  ICU 2.4

Definition at line 273 of file usetiter.h.

int32_t icu::UnicodeSetIterator::range
| protected

Range.

Stable:
  ICU 2.4

Definition at line 260 of file usetiter.h.

const UnicodeSet* icu::UnicodeSetIterator::set
| protected

The set.

Stable:
  ICU 2.4

Definition at line 252 of file usetiter.h.

const UnicodeString* icu::UnicodeSetIterator::string
| protected

If `codepoint == IS_STRING`, then `string` points to the current string.

If `codepoint != IS_STRING`, the value of `string` is undefined.

Stable:
  ICU 2.4

Definition at line 97 of file usetiter.h.

int32_t icu::UnicodeSetIterator::stringCount
| protected

String count.

Stable:
  ICU 2.4

Definition at line 277 of file usetiter.h.

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

- usetiter.h