ICU 58.2 58.2

- Main Page
- Related Pages
- Modules
- Namespaces
- Data Structures
- Files

- File List
- Globals

chariter.h
Go to the documentation of this file.
1 // Copyright (C) 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 #include "unicode/uobject.h"
17 #include "unicode/unistr.h"
23 U_NAMESPACE_BEGIN
91 class U_COMMON_API ForwardCharacterIterator : public UObject {
92 public:
98 enum { DONE = 0xffff };
99
104 virtual ~ForwardCharacterIterator();
105
114 virtual UBool operator==(const ForwardCharacterIterator& that) const = 0;
115
126 inline UBool operator!=(const ForwardCharacterIterator& that) const;
127
133 virtual int32_t hashCode(void) const = 0;
134
142 virtual UClassID getDynamicClassID(void) const = 0;
143
152 virtual UChar nextPostInc(void) = 0;
153
162 virtual UChar32 next32PostInc(void) = 0;
163
173 virtual UBool hasNext() = 0;
174
175 protected:
177 ForwardCharacterIterator();
178
180 ForwardCharacterIterator(const ForwardCharacterIterator &other);
181
186 ForwardCharacterIterator &operator=(const ForwardCharacterIterator&) { return *this; }
187 };
188
358 class U_COMMON_API CharacterIterator : public ForwardCharacterIterator {
359 public:
364 enum EOrigin { kStart, kCurrent, kEnd };
365
370 virtual ~CharacterIterator();
371
380 virtual CharacterIterator* clone(void) const = 0;
381
389 virtual UChar first(void) = 0;
390
399 virtual UChar firstPostInc(void);
400
410 virtual UChar32 first32(void) = 0;
411
420 virtual UChar32 first32PostInc(void);
421
429 inline int32_t setToStart();
430
438 virtual UChar last(void) = 0;
439
447 virtual UChar32 last32(void) = 0;
448
456 inline int32_t setToEnd();
457
466 virtual UChar setIndex(int32_t position) = 0;
467
479 virtual UChar32 setIndex32(int32_t position) = 0;
480
486 virtual UChar current(void) const = 0;
487
493 virtual UChar32 current32(void) const = 0;
494
502 virtual UChar next(void) = 0;
503
514 virtual UChar32 next32(void) = 0;
515
523 virtual UChar previous(void) = 0;
524
532 virtual UChar32 previous32(void) = 0;
533
543 virtual UBool hasPrevious() = 0;
544
555 inline int32_t startIndex(void) const;
556
566 inline int32_t endIndex(void) const;
567
576 inline int32_t getIndex(void) const;
577
584 inline int32_t getLength() const;
585
597 virtual int32_t move(int32_t delta, EOrigin origin) = 0;
598
610 virtual int32_t move32(int32_t delta, EOrigin origin) = 0;
611
618 virtual void getText(UnicodeString& result) = 0;
619
620 protected:
625 CharacterIterator();
626
631 CharacterIterator(int32_t length);
632
637 CharacterIterator(int32_t length, int32_t position);
638
643 CharacterIterator(int32_t length, int32_t textBegin, int32_t textEnd, int32_t position);
644
651 CharacterIterator(const CharacterIterator &that);
652
660 CharacterIterator &operator=(const CharacterIterator &that);
661
667 int32_t textLength;
668
673 int32_t pos;
674
679 int32_t begin;
680
685 int32_t end;
686 };
687
688 inline UBool
689 ForwardCharacterIterator::operator!=(const ForwardCharacterIterator& that) const {
690 return !operator==(that);
691 }
692
693 inline int32_t
694 CharacterIterator::setToStart() {
695 return move(0, kStart);
696 }
697
698 inline int32_t
699 CharacterIterator::setToEnd() {
700 return move(0, kEnd);
701 }
702
703 inline int32_t
704 CharacterIterator::startIndex(void) const {
705 return begin;
706 }
707
708 inline int32_t
709 CharacterIterator::endIndex(void) const {
710 return end;
711 }
712
713 inline int32_t
714 CharacterIterator::getIndex(void) const {
715 return pos;
716 }
717
718 inline int32_t
719 CharacterIterator::getLength(void) const {
720 return textLength;
721 }
722
723 U_NAMESPACE_END
724 #endif
icu::UObject::getDynamicClassID
virtual UClassID getDynamicClassID() const
ICU4C "poor man&#39;s RTTI", returns a UClassID for the actual ICU class.
unistr.h
C++ API: Unicode String.
icu::operator==
U_EXPORT UBool operator==(const StringPiece &x, const StringPiece &y)
Global operator == for StringPiece.
UClassID
void * UClassID
UClassID is used to identify classes without using the compiler&#39;s RTTI.
Definition: uobject.h:93
icu::CharacterIterator::setToEnd
int32_t setToEnd()
Sets the iterator to the end of its iteration range, just behind the last code unit or code point...
Definition: chariter.h:699
U_NAMESPACE_BEGIN
#define U_NAMESPACE_BEGIN
This is used to begin a declaration of a public ICU C++ API.
Definition: uversion.h:131
icu::CharacterIterator
Abstract class that defines an API for iteration on text objects.
Definition: chariter.h:358
icu::CharacterIterator::startIndex
int32_t startIndex(void) const
Returns the numeric index in the underlying text-storage object of the character returned by first()...
Definition: chariter.h:704
icu::operator!=
UBool operator!=(const StringPiece &x, const StringPiece &y)
Global operator != for StringPiece.
Definition: stringpiece.h:220
icu::CharacterIterator::setToStart
int32_t setToStart()
Sets the iterator to refer to the first code unit or code point in its iteration range.
Definition: chariter.h:694
icu::CharacterIterator::textLength
int32_t textLength
Base class text length field.
Definition: chariter.h:667
UChar32
int32_t UChar32
Define UChar32 as a type for single Unicode code points.
Definition: umachine.h:357
icu::CharacterIterator::endIndex
int32_t endIndex(void) const
Returns the numeric index in the underlying text-storage object of the position immediately BEYOND th...
Definition: chariter.h:709
icu::CharacterIterator::begin
int32_t begin
Base class field for the start of the iteration range.
Definition: chariter.h:679
uobject.h
C++ API: Common ICU base class UObject.
UChar
uint16_t UChar
Define UChar to be UCHAR_TYPE, if that is #defined (for example, to char16_t), or wchar_t if that is ...
Definition: umachine.h:337
U_NAMESPACE_END
#define U_NAMESPACE_END
This is used to end a declaration of a public ICU C++ API.
Definition: uversion.h:132
icu::ForwardCharacterIterator::operator!=
UBool operator!=(const ForwardCharacterIterator &that) const
Returns true when the iterators refer to different text-storage objects, or to different characters i...
Definition: chariter.h:689
icu::CharacterIterator::pos
int32_t pos
Base class field for the current position.
Definition: chariter.h:673
icu::ForwardCharacterIterator
Abstract class that defines an API for forward-only iteration on text objects.
Definition: chariter.h:91
utypes.h
Basic definitions for ICU, for both C and C++ APIs.
icu::CharacterIterator::getIndex
int32_t getIndex(void) const
Returns the numeric index in the underlying text-storage object of the character the iterator current...
Definition: chariter.h:714
icu::ForwardCharacterIterator::operator==
virtual UBool operator==(const ForwardCharacterIterator &that) const =0
Returns true when both iterators refer to the same character in the same character-storage object...
U_COMMON_API
#define U_COMMON_API
Set to export library symbols from inside the common library, and to import them from outside...
Definition: utypes.h:359
icu::UnicodeString
UnicodeString is a string class that stores Unicode characters directly and provides similar function...
Definition: unistr.h:295
icu::ForwardCharacterIterator::operator=
ForwardCharacterIterator & operator=(const ForwardCharacterIterator &)
Assignment operator to be overridden in the implementing class.
Definition: chariter.h:186
icu::CharacterIterator::end
int32_t end
Base class field for the end of the iteration range.
Definition: chariter.h:685
icu::UObject
UObject is the common ICU "boilerplate" class.
Definition: uobject.h:223
icu::CharacterIterator::EOrigin
EOrigin
Origin enumeration for the move() and move32() functions.
Definition: chariter.h:364
UBool
int8_t UBool
The ICU boolean type.
Definition: umachine.h:259
icu::CharacterIterator::getLength
int32_t getLength() const
Returns the length of the entire text in the underlying text-storage object.
Definition: chariter.h:719