Abstract class that defines an API for iteration on text objects. More...
#include <chariter.h>
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:
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 functions work as before and are shown below.
Examples for some of the new functions:
Forward iteration with hasNext():
for(it.setToStart(); it.hasNext();) {
c=it.next32PostInc();
}
}
CharacterIterator()
Empty constructor.
int32_t UChar32
Define UChar32 as a type for single Unicode code points.
Forward iteration more similar to loops with the old forward iteration, showing a way to convert simple for() loops:
char16_t c;
for(c=it.firstPostInc(); c!=CharacterIterator::DONE; c=it.nextPostInc()) {
}
}
Backward iteration with setToEnd() and hasPrevious():
for(it.setToEnd(); it.hasPrevious();) {
c=it.previous32();
}
}
Backward iteration with a more traditional for() loop:
char16_t c;
for(c=it.last(); c!=CharacterIterator::DONE; c=it.previous()) {
}
}
Example for random access:
it.move32(3, CharacterIterator::kStart);
int32_t
pos=it.getIndex();
char16_t u=it.previous();
it.move(-1, CharacterIterator::kCurrent);
if(c!=it.next32PostInc()) {
exit(1);
}
}
int32_t pos
Base class field for the current position.
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
{
for(char16_t c = iter.first(); c != CharacterIterator::DONE; c = iter.next()) {
processChar(c);
}
}
Traverse the text backwards, from end to start
{
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_t
end= 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;
cout <<
"start: "<< start <<
" end: "<<
end<< endl;
for(c = iter.setIndex(start); iter.getIndex() <
end; c = iter.next() ) {
processChar(c);
}
}
int32_t end
Base class field for the end of the iteration range.
Creating a StringCharacterIterator 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 line 361 of file chariter.h.
◆ EOrigin ◆ ~CharacterIterator() virtual icu::CharacterIterator::~CharacterIterator ( ) virtual ◆ CharacterIterator() [1/5] icu::CharacterIterator::CharacterIterator ( ) protected ◆ CharacterIterator() [2/5] icu::CharacterIterator::CharacterIterator ( int32_t length ) protectedConstructor, just setting the length field in this base class.
Constructor, just setting the length and position fields in this base class.
Constructor, just setting the length, start, end, and position fields in this base class.
Copy constructor.
Returns the numeric index in the underlying text-storage object of the position immediately BEYOND the character returned by last().
Definition at line 716 of file chariter.h.
◆ first() virtual char16_t icu::CharacterIterator::first ( ) pure virtualSets 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 with next().
Implemented in icu::UCharCharacterIterator.
◆ first32() virtual UChar32 icu::CharacterIterator::first32 ( ) pure virtual ◆ first32PostInc() virtual UChar32 icu::CharacterIterator::first32PostInc ( ) virtualSets 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 to setToStart() for forward iteration with next32PostInc().
Reimplemented in icu::UCharCharacterIterator.
◆ firstPostInc() virtual char16_t icu::CharacterIterator::firstPostInc ( ) virtualSets 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 to setToStart() for forward iteration with nextPostInc().
Reimplemented in icu::UCharCharacterIterator.
◆ getIndex() int32_t icu::CharacterIterator::getIndex ( ) const inlineReturns the numeric index in the underlying text-storage object of the character the iterator currently refers to (i.e., the character returned by current()).
Definition at line 721 of file chariter.h.
◆ getLength() int32_t icu::CharacterIterator::getLength ( ) const inlineReturns the length of the entire text in the underlying text-storage object.
Definition at line 726 of file chariter.h.
◆ getText() virtual void icu::CharacterIterator::getText ( UnicodeString & result ) pure virtual ◆ hasPrevious() virtual UBool icu::CharacterIterator::hasPrevious ( ) pure virtualReturns false if there are no more code units or code points before the current position in the iteration range.
This is used with previous() or previous32() in backward iteration.
Implemented in icu::UCharCharacterIterator.
◆ last() virtual char16_t icu::CharacterIterator::last ( ) pure virtualSets 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 with previous().
Implemented in icu::UCharCharacterIterator.
◆ last32() virtual UChar32 icu::CharacterIterator::last32 ( ) pure virtualSets 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 with previous32().
Implemented in icu::UCharCharacterIterator.
◆ move() virtual int32_t icu::CharacterIterator::move ( int32_t delta, EOrigin origin ) pure virtualMoves 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.
Implemented in icu::UCharCharacterIterator.
◆ move32() virtual int32_t icu::CharacterIterator::move32 ( int32_t delta, EOrigin origin ) pure virtualMoves 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.
Implemented in icu::UCharCharacterIterator.
◆ next() virtual char16_t icu::CharacterIterator::next ( ) pure virtualAdvances to the next code unit in the iteration range (toward endIndex()), and returns that code unit.
If there are no more code units to return, returns DONE.
Implemented in icu::UCharCharacterIterator.
◆ next32() virtual UChar32 icu::CharacterIterator::next32 ( ) pure virtualAdvances to the next code point in the iteration range (toward endIndex()), 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 by next32PostInc().
Implemented in icu::UCharCharacterIterator.
◆ operator=() ◆ previous() virtual char16_t icu::CharacterIterator::previous ( ) pure virtualAdvances to the previous code unit in the iteration range (toward startIndex()), and returns that code unit.
If there are no more code units to return, returns DONE.
Implemented in icu::UCharCharacterIterator.
◆ previous32() virtual UChar32 icu::CharacterIterator::previous32 ( ) pure virtualAdvances to the previous code point in the iteration range (toward startIndex()), and returns that code point.
If there are no more code points to return, returns DONE.
Implemented in icu::UCharCharacterIterator.
◆ setIndex() virtual char16_t icu::CharacterIterator::setIndex ( int32_t position ) pure virtualSets the iterator to refer to the "position"-th code unit in the text-storage object the iterator refers to, and returns that code unit.
Implemented in icu::UCharCharacterIterator.
◆ setIndex32() virtual UChar32 icu::CharacterIterator::setIndex32 ( int32_t position ) pure virtualSets 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).
Implemented in icu::UCharCharacterIterator.
◆ setToEnd() int32_t icu::CharacterIterator::setToEnd ( ) inlineSets 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 with previous() or previous32().
Definition at line 706 of file chariter.h.
◆ setToStart() int32_t icu::CharacterIterator::setToStart ( ) inlineSets 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 with nextPostInc() or next32PostInc().
Definition at line 701 of file chariter.h.
◆ startIndex() int32_t icu::CharacterIterator::startIndex ( ) const inlineReturns the numeric index in the underlying text-storage object of the character returned by first().
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 line 711 of file chariter.h.
◆ begin int32_t icu::CharacterIterator::begin protectedBase class field for the start of the iteration range.
Definition at line 686 of file chariter.h.
◆ end int32_t icu::CharacterIterator::end protectedBase class field for the end of the iteration range.
Definition at line 692 of file chariter.h.
◆ pos int32_t icu::CharacterIterator::pos protectedBase class field for the current position.
Definition at line 680 of file chariter.h.
◆ textLength int32_t icu::CharacterIterator::textLength protectedThe documentation for this class was generated from the following file:
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4