ICU 67.1  67.1
Public Types | Public Member Functions | Protected Member Functions | Protected Attributes
icu::CharacterIterator Class Referenceabstract

Abstract class that defines an API for iteration on text objects. More...

#include <chariter.h>

Inheritance diagram for icu::CharacterIterator:
icu::ForwardCharacterIterator icu::UObject icu::UMemory icu::UCharCharacterIterator icu::StringCharacterIterator

Public Types

enum  EOrigin { kStart , kCurrent , kEnd }
 Origin enumeration for the move() and move32() functions. More...
 
- Public Types inherited from icu::ForwardCharacterIterator
enum  { DONE = 0xffff }
 Value returned by most of ForwardCharacterIterator's functions when the iterator has reached the limits of its iteration. More...
 

Public Member Functions

virtual ~CharacterIterator ()
 Destructor. More...
 
virtual CharacterIteratorclone () const =0
 Returns a pointer to a new CharacterIterator of the same concrete class as this one, and referring to the same character in the same text-storage object as this one. More...
 
virtual char16_t first (void)=0
 Sets the iterator to refer to the first code unit in its iteration range, and returns that code unit. More...
 
virtual char16_t firstPostInc (void)
 Sets the iterator to refer to the first code unit in its iteration range, returns that code unit, and moves the position to the second code unit. More...
 
virtual UChar32 first32 (void)=0
 Sets the iterator to refer to the first code point in its iteration range, and returns that code unit, This can be used to begin an iteration with next32(). More...
 
virtual UChar32 first32PostInc (void)
 Sets the iterator to refer to the first code point in its iteration range, returns that code point, and moves the position to the second code point. More...
 
int32_t setToStart ()
 Sets the iterator to refer to the first code unit or code point in its iteration range. More...
 
virtual char16_t last (void)=0
 Sets the iterator to refer to the last code unit in its iteration range, and returns that code unit. More...
 
virtual UChar32 last32 (void)=0
 Sets the iterator to refer to the last code point in its iteration range, and returns that code unit. More...
 
int32_t setToEnd ()
 Sets the iterator to the end of its iteration range, just behind the last code unit or code point. More...
 
virtual char16_t setIndex (int32_t position)=0
 Sets the iterator to refer to the "position"-th code unit in the text-storage object the iterator refers to, and returns that code unit. More...
 
virtual UChar32 setIndex32 (int32_t position)=0
 Sets the iterator to refer to the beginning of the code point that contains the "position"-th code unit in the text-storage object the iterator refers to, and returns that code point. More...
 
virtual char16_t current (void) const =0
 Returns the code unit the iterator currently refers to. More...
 
virtual UChar32 current32 (void) const =0
 Returns the code point the iterator currently refers to. More...
 
virtual char16_t next (void)=0
 Advances to the next code unit in the iteration range (toward endIndex()), and returns that code unit. More...
 
virtual UChar32 next32 (void)=0
 Advances to the next code point in the iteration range (toward endIndex()), and returns that code point. More...
 
virtual char16_t previous (void)=0
 Advances to the previous code unit in the iteration range (toward startIndex()), and returns that code unit. More...
 
virtual UChar32 previous32 (void)=0
 Advances to the previous code point in the iteration range (toward startIndex()), and returns that code point. More...
 
virtual UBool hasPrevious ()=0
 Returns FALSE if there are no more code units or code points before the current position in the iteration range. More...
 
int32_t startIndex (void) const
 Returns the numeric index in the underlying text-storage object of the character returned by first(). More...
 
int32_t endIndex (void) const
 Returns the numeric index in the underlying text-storage object of the position immediately BEYOND the character returned by last(). More...
 
int32_t getIndex (void) const
 Returns the numeric index in the underlying text-storage object of the character the iterator currently refers to (i.e., the character returned by current()). More...
 
int32_t getLength () const
 Returns the length of the entire text in the underlying text-storage object. More...
 
virtual int32_t move (int32_t delta, EOrigin origin)=0
 Moves the current position relative to the start or end of the iteration range, or relative to the current position itself. More...
 
virtual int32_t move32 (int32_t delta, EOrigin origin)=0
 Moves the current position relative to the start or end of the iteration range, or relative to the current position itself. More...
 
virtual void getText (UnicodeString &result)=0
 Copies the text under iteration into the UnicodeString referred to by "result". More...
 
- Public Member Functions inherited from icu::ForwardCharacterIterator
virtual ~ForwardCharacterIterator ()
 Destructor. More...
 
virtual UBool operator== (const ForwardCharacterIterator &that) const =0
 Returns true when both iterators refer to the same character in the same character-storage object. More...
 
UBool operator!= (const ForwardCharacterIterator &that) const
 Returns true when the iterators refer to different text-storage objects, or to different characters in the same text-storage object. More...
 
virtual int32_t hashCode (void) const =0
 Generates a hash code for this iterator. More...
 
virtual UClassID getDynamicClassID (void) const =0
 Returns a UClassID for this ForwardCharacterIterator ("poor man's RTTI"). More...
 
virtual char16_t nextPostInc (void)=0
 Gets the current code unit for returning and advances to the next code unit in the iteration range (toward endIndex()). More...
 
virtual UChar32 next32PostInc (void)=0
 Gets the current code point for returning and advances to the next code point in the iteration range (toward endIndex()). More...
 
virtual UBool hasNext ()=0
 Returns FALSE if there are no more code units or code points at or after the current position in the iteration range. More...
 
- Public Member Functions inherited from icu::UObject
virtual ~UObject ()
 Destructor. More...
 

Protected Member Functions

 CharacterIterator ()
 Empty constructor. More...
 
 CharacterIterator (int32_t length)
 Constructor, just setting the length field in this base class. More...
 
 CharacterIterator (int32_t length, int32_t position)
 Constructor, just setting the length and position fields in this base class. More...
 
 CharacterIterator (int32_t length, int32_t textBegin, int32_t textEnd, int32_t position)
 Constructor, just setting the length, start, end, and position fields in this base class. More...
 
 CharacterIterator (const CharacterIterator &that)
 Copy constructor. More...
 
CharacterIteratoroperator= (const CharacterIterator &that)
 Assignment operator. More...
 
- Protected Member Functions inherited from icu::ForwardCharacterIterator
 ForwardCharacterIterator ()
 Default constructor to be overridden in the implementing class. More...
 
 ForwardCharacterIterator (const ForwardCharacterIterator &other)
 Copy constructor to be overridden in the implementing class. More...
 
ForwardCharacterIteratoroperator= (const ForwardCharacterIterator &)
 Assignment operator to be overridden in the implementing class. More...
 

Protected Attributes

int32_t textLength
 Base class text length field. More...
 
int32_t pos
 Base class field for the current position. More...
 
int32_t begin
 Base class field for the start of the iteration range. More...
 
int32_t end
 Base class field for the end of the iteration range. More...
 

Detailed Description

Abstract class that defines an API for iteration on text objects.

This is an interface for forward and backward iteration and random access into a text object.

The API provides backward compatibility to the Java and older ICU CharacterIterator classes but extends them significantly:

  1. CharacterIterator is now a subclass of ForwardCharacterIterator.
  2. While the old API functions provided forward iteration with "pre-increment" semantics, the new one also provides functions with "post-increment" semantics. They are more efficient and should be the preferred iterator functions for new implementations. The backward iteration always had "pre-decrement" semantics, which are efficient.
  3. Just like ForwardCharacterIterator, it provides access to both code units and code points. Code point access versions are available for the old and the new iteration semantics.
  4. There are new functions for setting and moving the current position without returning a character, for efficiency.

See ForwardCharacterIterator for examples for using the new forward iteration functions. For backward iteration, there is also a hasPrevious() function that can be used analogously to hasNext(). The old functionsiv claml#a09fff5c3b5a5b61dcf2f03a2232773401b570">More...