ICU 76.1 76.1
Loading...
Searching...
No Matches
chariter.h
Go to the documentation of this file.
1// © 2016 and later: Unicode, Inc. and others.
2// License & terms of use: http://www.unicode.org/copyright.html
3/*
4********************************************************************
5*
6* Copyright (C) 1997-2011, International Business Machines
7* Corporation and others. All Rights Reserved.
8*
9********************************************************************
10*/
11
12#ifndef CHARITER_H
13#define CHARITER_H
14
15#include "unicode/utypes.h"
16
17#if U_SHOW_CPLUSPLUS_API
18
19#include "unicode/uobject.h"
20#include "unicode/unistr.h"
26U_NAMESPACE_BEGIN
95public:
101 enum { DONE = 0xffff };
102
108
117 virtual bool operator==(const ForwardCharacterIterator& that) const = 0;
118
129 inline bool operator!=(const ForwardCharacterIterator& that) const;
130
136 virtual int32_t hashCode() const = 0;
137
145 virtual UClassID getDynamicClassID() const override = 0;
146
155 virtual char16_t nextPostInc() = 0;
156
165 virtual UChar32 next32PostInc() = 0;
166
176 virtual UBool hasNext() = 0;
177
178protected:
181
184
190};
191
362public:
367 enum EOrigin { kStart, kCurrent, kEnd };
368
374
383 virtual CharacterIterator* clone() const = 0;
384
392 virtual char16_t first() = 0;
393
402 virtual char16_t firstPostInc();
403
413 virtual UChar32 first32() = 0;
414
424
432 inline int32_t setToStart();
433
441 virtual char16_t last() = 0;
442
450 virtual UChar32 last32() = 0;
451
459 inline int32_t setToEnd();
460
469 virtual char16_t setIndex(int32_t position) = 0;
470
482 virtual UChar32 setIndex32(int32_t position) = 0;
483
489 virtual char16_t current() const = 0;
490
496 virtual UChar32 current32() const = 0;
497
505 virtual char16_t next() = 0;
506
517 virtual UChar32 next32() = 0;
518
526 virtual char16_t previous() = 0;
527
535 virtual UChar32 previous32() = 0;
536
546 virtual UBool hasPrevious() = 0;
547
558 inline int32_t startIndex() const;
559
569 inline int32_t endIndex() const;
570
579 inline int32_t getIndex() const;
580
587 inline int32_t getLength() const;
588
600 virtual int32_t move(int32_t delta, EOrigin origin) = 0;
601
613#ifdef move32
614 // One of the system headers right now is sometimes defining a conflicting macro we don't use
615#undef move32
616#endif
617 virtual int32_t move32(int32_t delta, EOrigin origin) = 0;
618
625 virtual void getText(UnicodeString& result) = 0;
626
627protected:
633
638 CharacterIterator(int32_t length);
639
644 CharacterIterator(int32_t length, int32_t position);
645
650 CharacterIterator(int32_t length, int32_t textBegin, int32_t textEnd, int32_t position);
651
659
668
674 int32_t textLength;
675
680 int32_t pos;
681
686 int32_t begin;
687
692 int32_t end;
693};
694
695inline bool
696ForwardCharacterIterator::operator!=(const ForwardCharacterIterator& that) const {
697 return !operator==(that);
698}
699
700inline int32_t
701CharacterIterator::setToStart() {
702 return move(0, kStart);
703}
704
705inline int32_t
706CharacterIterator::setToEnd() {
707 return move(0, kEnd);
708}
709
710inline int32_t
711CharacterIterator::startIndex() const {
712 return begin;
713}
714
715inline int32_t
716CharacterIterator::endIndex() const {
717 return end;
718}
719
720inline int32_t
721CharacterIterator::getIndex() const {
722 return pos;
723}
724
725inline int32_t
726CharacterIterator::getLength() const {
727 return textLength;
728}
729
730U_NAMESPACE_END
731
732#endif /* U_SHOW_CPLUSPLUS_API */
733
734#endif
Abstract class that defines an API for iteration on text objects.
Definition chariter.h:361
virtual char16_t firstPostInc()
Sets the iterator to refer to the first code unit in its iteration range, returns that code unit,...
EOrigin
Origin enumeration for the move() and move32() functions.
Definition chariter.h:367
int32_t textLength
Base class text length field.
Definition chariter.h:674
virtual UChar32 previous32()=0
Advances to the previous code point in the iteration range (toward startIndex()), and returns that co...
CharacterIterator(int32_t length, int32_t position)
Constructor, just setting the length and position fields in this base class.
virtual char16_t last()=0
Sets the iterator to refer to the last code unit in its iteration range, and returns that code unit.
virtual void getText(UnicodeString &result)=0
Copies the text under iteration into the UnicodeString referred to by "result".
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 cu...
virtual UChar32 first32()=0
Sets the iterator to refer to the first code point in its iteration range, and returns that code unit...
virtual char16_t next()=0
Advances to the next code unit in the iteration range (toward endIndex()), and returns that code unit...
CharacterIterator & operator=(const CharacterIterator &that)
Assignment operator.
virtual UChar32 last32()=0
Sets the iterator to refer to the last code point in its iteration range, and returns that code unit.
virtual ~CharacterIterator()
Destructor.
virtual char16_t current() const =0
Returns the code unit the iterator currently refers to.
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 un...
int32_t begin
Base class field for the start of the iteration range.
Definition chariter.h:686
CharacterIterator(int32_t length)
Constructor, just setting the length field in this base class.
int32_t pos
Base class field for the current position.
Definition chariter.h:680
virtual UChar32 next32()=0
Advances to the next code point in the iteration range (toward endIndex()), and returns that code poi...
int32_t end
Base class field for the end of the iteration range.
Definition chariter.h:692
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 cu...
virtual UChar32 first32PostInc()
Sets the iterator to refer to the first code point in its iteration range, returns that code point,...
CharacterIterator(const CharacterIterator &that)
Copy constructor.
virtual UChar32 current32() const =0
Returns the code point the iterator currently refers to.
virtual UBool hasPrevious()=0
Returns false if there are no more code units or code points before the current position in the itera...
virtual CharacterIterator * clone() const =0
Returns a pointer to a new CharacterIterator of the same concrete class as this one,...
virtual char16_t previous()=0
Advances to the previous code unit in the iteration range (toward startIndex()), and returns that cod...
virtual char16_t first()=0
Sets the iterator to refer to the first code unit in its iteration range, and returns that code unit.
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 ref...
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.
CharacterIterator()
Empty constructor.
Abstract class that defines an API for forward-only iteration on text objects.
Definition chariter.h:94
virtual UClassID getDynamicClassID() const override=0
Returns a UClassID for this ForwardCharacterIterator ("poor man's RTTI").
virtual ~ForwardCharacterIterator()
Destructor.
virtual UChar32 next32PostInc()=0
Gets the current code point for returning and advances to the next code point in the iteration range ...
virtual int32_t hashCode() const =0
Generates a hash code for this iterator.
ForwardCharacterIterator(const ForwardCharacterIterator &other)
Copy constructor to be overridden in the implementing class.
virtual bool operator==(const ForwardCharacterIterator &that) const =0
Returns true when both iterators refer to the same character in the same character-storage object.
ForwardCharacterIterator & operator=(const ForwardCharacterIterator &)
Assignment operator to be overridden in the implementing class.
Definition chariter.h:189
ForwardCharacterIterator()
Default constructor to be overridden in the implementing class.
virtual UBool hasNext()=0
Returns false if there are no more code units or code points at or after the current position in the ...
virtual char16_t nextPostInc()=0
Gets the current code unit for returning and advances to the next code unit in the iteration range (t...
UObject is the common ICU "boilerplate" class.
Definition uobject.h:223
UnicodeString is a string class that stores Unicode characters directly and provides similar function...
Definition unistr.h:296
U_EXPORT UBool operator==(const StringPiece &x, const StringPiece &y)
Global operator == for StringPiece.
bool operator!=(const StringPiece &x, const StringPiece &y)
Global operator != for StringPiece.
int32_t UChar32
Define UChar32 as a type for single Unicode code points.
Definition umachine.h:427
int8_t UBool
The ICU boolean type, a signed-byte integer.
Definition umachine.h:247
C++ API: Unicode String.
C++ API: Common ICU base class UObject.
void * UClassID
UClassID is used to identify classes without using the compiler's RTTI.
Definition uobject.h:96
Basic definitions for ICU, for both C and C++ APIs.
#define U_COMMON_API
Set to export library symbols from inside the common library, and to import them from outside.
Definition utypes.h:315