ICU 60.1  60.1
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:
icu::UObject icu::UMemory

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 UnicodeStringgetString ()
 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...
 
UnicodeSetIteratoroperator= (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 UnicodeStringstring
 If codepoint == IS_STRING, then string points to the current string. More...
 
const UnicodeSetset
 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...
 
UnicodeStringcpString
 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 63 of file usetiter.h.

Member Enumeration Documentation

◆ anonymous enum

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

Constructor & Destructor Documentation

◆ UnicodeSetIterator() [1/3]

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
setset to iterate over
Stable:
ICU 2.4

◆ UnicodeSetIterator() [2/3]

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

◆ UnicodeSetIterator() [3/3]

icu::UnicodeSetIterator::UnicodeSetIterator ( const UnicodeSetIterator )
protected

Copy constructor.

Disallowed.

Stable:
ICU 2.4

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

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

References U_NAMESPACE_END.

◆ getDynamicClassID()

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.

◆ getStaticClassID()

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

◆ loadRange()

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

Load range.

Stable:
ICU 2.4

◆ 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

◆ operator=()

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

Assignment operator.

Disallowed.

Stable:
ICU 2.4

◆ reset() [1/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
setthe set to iterate over.
Stable:
ICU 2.4

◆ reset() [2/2]

void icu::UnicodeSetIterator::reset ( )

Resets this iterator to the start of the set.

Stable:
ICU 2.4

Field Documentation

◆ codepoint

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

◆ codepointEnd

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

◆ cpString

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

◆ endElement

int32_t icu::UnicodeSetIterator::endElement
protected

End element.

Stable:
ICU 2.4

Definition at line 266 of file usetiter.h.

◆ endRange

int32_t icu::UnicodeSetIterator::endRange
protected

End range.

Stable:
ICU 2.4

Definition at line 258 of file usetiter.h.

◆ nextElement

int32_t icu::UnicodeSetIterator::nextElement
protected

Next element.

Stable:
ICU 2.4

Definition at line 270 of file usetiter.h.

◆ nextString

int32_t icu::UnicodeSetIterator::nextString
protected

Next string.

Stable:
ICU 2.4

Definition at line 275 of file usetiter.h.

◆ range

int32_t icu::UnicodeSetIterator::range
protected

Range.

Stable:
ICU 2.4

Definition at line 262 of file usetiter.h.

◆ set

const UnicodeSet* icu::UnicodeSetIterator::set
protected

The set.

Stable:
ICU 2.4

Definition at line 254 of file usetiter.h.

◆ string

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

◆ stringCount

int32_t icu::UnicodeSetIterator::stringCount
protected

String count.

Stable:
ICU 2.4

Definition at line 279 of file usetiter.h.


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