ICU 78.1 78.1 |
Abstract class that defines an API for iteration on text objects.More...
#include <chariter.h>

Public Types | |
| enum | EOrigin {kStart,kCurrent,kEnd } |
| Origin enumeration for themove() andmove32() functions.More... | |
Public Types inherited fromicu::ForwardCharacterIterator | |
| enum | {DONE = 0xffff } |
| Value returned by most ofForwardCharacterIterator's functions when the iterator has reached the limits of its iteration.More... | |
Public Member Functions | |
| virtual | ~CharacterIterator () |
| Destructor.More... | |
| virtualCharacterIterator * | clone () const =0 |
| Returns a pointer to a newCharacterIterator 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 ()=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 () |
| 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... | |
| virtualUChar32 | first32 ()=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 withnext32().More... | |
| virtualUChar32 | first32PostInc () |
| 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 ()=0 |
| Sets the iterator to refer to the last code unit in its iteration range, and returns that code unit.More... | |
| virtualUChar32 | last32 ()=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... | |
| virtualUChar32 | 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 () const =0 |
| Returns the code unit the iterator currently refers to.More... | |
| virtualUChar32 | current32 () const =0 |
| Returns the code point the iterator currently refers to.More... | |
| virtual char16_t | next ()=0 |
| Advances to the next code unit in the iteration range (towardendIndex()), and returns that code unit.More... | |
| virtualUChar32 | next32 ()=0 |
| Advances to the next code point in the iteration range (towardendIndex()), and returns that code point.More... | |
| virtual char16_t | previous ()=0 |
| Advances to the previous code unit in the iteration range (towardstartIndex()), and returns that code unit.More... | |
| virtualUChar32 | previous32 ()=0 |
| Advances to the previous code point in the iteration range (towardstartIndex()), and returns that code point.More... | |
| virtualUBool | 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 () const |
| Returns the numeric index in the underlying text-storage object of the character returned byfirst().More... | |
| int32_t | endIndex () const |
| Returns the numeric index in the underlying text-storage object of the position immediately BEYOND the character returned bylast().More... | |
| int32_t | getIndex () const |
| Returns the numeric index in the underlying text-storage object of the character the iterator currently refers to (i.e., the character returned bycurrent()).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 theUnicodeString referred to by "result".More... | |
Public Member Functions inherited fromicu::ForwardCharacterIterator | |
| virtual | ~ForwardCharacterIterator () |
| Destructor.More... | |
| virtual bool | operator== (constForwardCharacterIterator &that) const =0 |
| Returns true when both iterators refer to the same character in the same character-storage object.More... | |
| bool | operator!= (constForwardCharacterIterator &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 () const =0 |
| Generates a hash code for this iterator.More... | |
| virtualUClassID | getDynamicClassID () const override=0 |
| Returns a UClassID for thisForwardCharacterIterator ("poor man'sRTTI").More... | |
| virtual char16_t | nextPostInc ()=0 |
| Gets the current code unit for returning and advances to the next code unit in the iteration range (toward endIndex()).More... | |
| virtualUChar32 | next32PostInc ()=0 |
| Gets the current code point for returning and advances to the next code point in the iteration range (toward endIndex()).More... | |
| virtualUBool | 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 fromicu::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 (constCharacterIterator &that) | |
| Copy constructor.More... | |
| CharacterIterator & | operator= (constCharacterIterator &that) |
| Assignment operator.More... | |
Protected Member Functions inherited fromicu::ForwardCharacterIterator | |
| ForwardCharacterIterator () | |
| Default constructor to be overridden in the implementing class.More... | |
| ForwardCharacterIterator (constForwardCharacterIterator &other) | |
| Copy constructor to be overridden in the implementing class.More... | |
| ForwardCharacterIterator & | operator= (constForwardCharacterIterator &) |
| 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... | |
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 ICUCharacterIterator classes but extends them significantly:
SeeForwardCharacterIterator for examples for using the new forward iteration functions. For backward iteration, there is also ahasPrevious() function that can be used analogously tohasNext(). The old functions work as before and are shown below.
Examples for some of the new functions:
Forward iteration withhasNext():
Forward iteration more similar to loops with the old forward iteration, showing a way to convert simple for() loops:
Backward iteration withsetToEnd() andhasPrevious():
Backward iteration with a more traditional for() loop:
Example for random access:
Examples, especially for the old API:
Function processing characters, in this example simple output
void processChar( char16_t c ){cout <<" " << c;}
Traverse the text from start to finish
void traverseForward(CharacterIterator& iter){for(char16_t c = iter.first(); c != CharacterIterator::DONE; c = iter.next()) {processChar(c);}}
Traverse the text backwards, from end to start
void traverseBackward(CharacterIterator& iter){for(char16_t c = iter.last(); c != CharacterIterator::DONE; c = iter.previous()) {processChar(c);}}
Traverse both forward and backward from a given position in the text. Calls to notBoundary() in this example represents some additional stopping criteria.
{char16_t c;for (c = iter.setIndex(pos);c != CharacterIterator::DONE && (Unicode::isLetter(c) || Unicode::isDigit(c));c = iter.next()) {}int32_tend = iter.getIndex();for (c = iter.setIndex(pos);c != CharacterIterator::DONE && (Unicode::isLetter(c) || Unicode::isDigit(c));c = iter.previous()) {}int32_t start = iter.getIndex() + 1;for (c = iter.setIndex(start); iter.getIndex() <end; c = iter.next() ) {processChar(c);}}
Creating aStringCharacterIterator and calling the test functions
void CharacterIterator_Example(void ){cout << endl <<"===== CharacterIterator_Example: =====" << endl;UnicodeString text("Ein kleiner Satz.");StringCharacterIterator iterator(text);cout <<"----- traverseForward: -----------" << endl;traverseForward( iterator );cout << endl << endl <<"----- traverseBackward: ----------" << endl;traverseBackward( iterator );cout << endl << endl <<"----- traverseOut: ---------------" << endl;traverseOut( iterator, 7 );cout << endl << endl <<"-----" << endl;}
Definition at line361 of filechariter.h.
Origin enumeration for themove() andmove32() functions.
Definition at line367 of filechariter.h.
| virtual |
Destructor.
| protected |
Empty constructor.
| protected |
Constructor, just setting the length field in this base class.
| protected |
Constructor, just setting the length and position fields in this base class.
| protected |
Constructor, just setting the length, start, end, and position fields in this base class.
| protected |
| pure virtual |
Returns a pointer to a newCharacterIterator of the same concrete class as this one, and referring to the same character in the same text-storage object as this one.
The caller is responsible for deleting the new clone.
Implemented inicu::UCharCharacterIterator, andicu::StringCharacterIterator.
| pure virtual |
Returns the code unit the iterator currently refers to.
Implemented inicu::UCharCharacterIterator.
| pure virtual |
Returns the code point the iterator currently refers to.
Implemented inicu::UCharCharacterIterator.
| inline |
Returns the numeric index in the underlying text-storage object of the position immediately BEYOND the character returned bylast().
Definition at line716 of filechariter.h.
| pure virtual |
Sets the iterator to refer to the first code unit in its iteration range, and returns that code unit.
This can be used to begin an iteration withnext().
Implemented inicu::UCharCharacterIterator.
| pure virtual |
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 withnext32().
Note that an iteration withnext32PostInc(), beginning with, e.g.,setToStart() orfirstPostInc(), is more efficient.
Implemented inicu::UCharCharacterIterator.
| virtual |
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.
This is an alternative tosetToStart() for forward iteration withnext32PostInc().
Reimplemented inicu::UCharCharacterIterator.
| virtual |
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.
This is an alternative tosetToStart() for forward iteration withnextPostInc().
Reimplemented inicu::UCharCharacterIterator.
| inline |
Returns the numeric index in the underlying text-storage object of the character the iterator currently refers to (i.e., the character returned bycurrent()).
Definition at line721 of filechariter.h.
| inline |
Returns the length of the entire text in the underlying text-storage object.
Definition at line726 of filechariter.h.
| pure virtual |
Copies the text under iteration into theUnicodeString referred to by "result".
| result | Receives a copy of the text under iteration. |
Implemented inicu::UCharCharacterIterator, andicu::StringCharacterIterator.
| pure virtual |
Returns false if there are no more code units or code points before the current position in the iteration range.
This is used withprevious() orprevious32() in backward iteration.
Implemented inicu::UCharCharacterIterator.
| pure virtual |
Sets the iterator to refer to the last code unit in its iteration range, and returns that code unit.
This can be used to begin an iteration withprevious().
Implemented inicu::UCharCharacterIterator.
| pure virtual |
Sets the iterator to refer to the last code point in its iteration range, and returns that code unit.
This can be used to begin an iteration withprevious32().
Implemented inicu::UCharCharacterIterator.
| pure virtual |
Moves the current position relative to the start or end of the iteration range, or relative to the current position itself.
The movement is expressed in numbers of code units forward or backward by specifying a positive or negative delta.
| delta | the position relative to origin. A positive delta means forward; a negative delta means backward. |
| origin | Origin enumeration {kStart, kCurrent, kEnd} |
Implemented inicu::UCharCharacterIterator.
| pure virtual |
Moves the current position relative to the start or end of the iteration range, or relative to the current position itself.
The movement is expressed in numbers of code points forward or backward by specifying a positive or negative delta.
| delta | the position relative to origin. A positive delta means forward; a negative delta means backward. |
| origin | Origin enumeration {kStart, kCurrent, kEnd} |
Implemented inicu::UCharCharacterIterator.
| pure virtual |
Advances to the next code unit in the iteration range (towardendIndex()), and returns that code unit.
If there are no more code units to return, returns DONE.
Implemented inicu::UCharCharacterIterator.
| pure virtual |
Advances to the next code point in the iteration range (towardendIndex()), and returns that code point.
If there are no more code points to return, returns DONE. Note that iteration with "pre-increment" semantics is less efficient than iteration with "post-increment" semantics that is provided bynext32PostInc().
Implemented inicu::UCharCharacterIterator.
| protected |
Assignment operator.
Sets thisCharacterIterator to have the same behavior, as the one passed in.
| that | TheCharacterIterator passed in. |
| pure virtual |
Advances to the previous code unit in the iteration range (towardstartIndex()), and returns that code unit.
If there are no more code units to return, returns DONE.
Implemented inicu::UCharCharacterIterator.
| pure virtual |
Advances to the previous code point in the iteration range (towardstartIndex()), and returns that code point.
If there are no more code points to return, returns DONE.
Implemented inicu::UCharCharacterIterator.
| pure virtual |
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.
| position | the "position"-th code unit in the text-storage object |
Implemented inicu::UCharCharacterIterator.
| pure virtual |
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.
The current position is adjusted to the beginning of the code point (its first code unit).
| position | the "position"-th code unit in the text-storage object |
Implemented inicu::UCharCharacterIterator.
| inline |
Sets the iterator to the end of its iteration range, just behind the last code unit or code point.
This can be used to begin a backward iteration withprevious() orprevious32().
Definition at line706 of filechariter.h.
| inline |
Sets the iterator to refer to the first code unit or code point in its iteration range.
This can be used to begin a forward iteration withnextPostInc() ornext32PostInc().
Definition at line701 of filechariter.h.
| inline |
Returns the numeric index in the underlying text-storage object of the character returned byfirst().
Since it's possible to create an iterator that iterates across only part of a text-storage object, this number isn't necessarily 0.
Definition at line711 of filechariter.h.
| protected |
Base class field for the start of the iteration range.
Definition at line686 of filechariter.h.
| protected |
Base class field for the end of the iteration range.
Definition at line692 of filechariter.h.
| protected |
| protected |
Base class text length field.
Necessary this for correctgetText() andhashCode().
Definition at line674 of filechariter.h.