ICU 56.1: chariter.h Source File

ICU 56.1 56.1

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

- File List
- Globals

chariter.h
Go to the documentation of this file.
1 /*
2 ********************************************************************
3 *
4 * Copyright (C) 1997-2011, International Business Machines
5 * Corporation and others. All Rights Reserved.
6 *
7 ********************************************************************
8 */
9
10 #ifndef CHARITER_H
11 #define CHARITER_H
12
13 #include "unicode/utypes.h"
14 #include "unicode/uobject.h"
15 #include "unicode/unistr.h"
21 U_NAMESPACE_BEGIN
89 class U_COMMON_API ForwardCharacterIterator : public UObject {
90 public:
96 enum { DONE = 0xffff };
97
102 virtual ~ForwardCharacterIterator();
103
112 virtual UBool operator==(const ForwardCharacterIterator& that) const = 0;
113
124 inline UBool operator!=(const ForwardCharacterIterator& that) const;
125
131 virtual int32_t hashCode(void) const = 0;
132
140 virtual UClassID getDynamicClassID(void) const = 0;
141
150 virtual UChar nextPostInc(void) = 0;
151
160 virtual UChar32 next32PostInc(void) = 0;
161
171 virtual UBool hasNext() = 0;
172
173 protected:
175 ForwardCharacterIterator();
176
178 ForwardCharacterIterator(const ForwardCharacterIterator &other);
179
184 ForwardCharacterIterator &operator=(const ForwardCharacterIterator&) { return *this; }
185 };
186
356 class U_COMMON_API CharacterIterator : public ForwardCharacterIterator {
357 public:
362 enum EOrigin { kStart, kCurrent, kEnd };
363
368 virtual ~CharacterIterator();
369
378 virtual CharacterIterator* clone(void) const = 0;
379
387 virtual UChar first(void) = 0;
388
397 virtual UChar firstPostInc(void);
398
408 virtual UChar32 first32(void) = 0;
409
418 virtual UChar32 first32PostInc(void);
419
427 inline int32_t setToStart();
428
436 virtual UChar last(void) = 0;
437
445 virtual UChar32 last32(void) = 0;
446
454 inline int32_t setToEnd();
455
464 virtual UChar setIndex(int32_t position) = 0;
465
477 virtual UChar32 setIndex32(int32_t position) = 0;
478
484 virtual UChar current(void) const = 0;
485
491 virtual UChar32 current32(void) const = 0;
492
500 virtual UChar next(void) = 0;
501
512 virtual UChar32 next32(void) = 0;
513
521 virtual UChar previous(void) = 0;
522
530 virtual UChar32 previous32(void) = 0;
531
541 virtual UBool hasPrevious() = 0;
542
553 inline int32_t startIndex(void) const;
554
564 inline int32_t endIndex(void) const;
565
574 inline int32_t getIndex(void) const;
575
582 inline int32_t getLength() const;
583
595 virtual int32_t move(int32_t delta, EOrigin origin) = 0;
596
608 virtual int32_t move32(int32_t delta, EOrigin origin) = 0;
609
616 virtual void getText(UnicodeString& result) = 0;
617
618 protected:
623 CharacterIterator();
624
629 CharacterIterator(int32_t length);
630
635 CharacterIterator(int32_t length, int32_t position);
636
641 CharacterIterator(int32_t length, int32_t textBegin, int32_t textEnd, int32_t position);
642
649 CharacterIterator(const CharacterIterator &that);
650
658 CharacterIterator &operator=(const CharacterIterator &that);
659
665 int32_t textLength;
666
671 int32_t pos;
672
677 int32_t begin;
678
683 int32_t end;
684 };
685
686 inline UBool
687 ForwardCharacterIterator::operator!=(const ForwardCharacterIterator& that) const {
688 return !operator==(that);
689 }
690
691 inline int32_t
692 CharacterIterator::setToStart() {
693 return move(0, kStart);
694 }
695
696 inline int32_t
697 CharacterIterator::setToEnd() {
698 return move(0, kEnd);
699 }
700
701 inline int32_t
702 CharacterIterator::startIndex(void) const {
703 return begin;
704 }
705
706 inline int32_t
707 CharacterIterator::endIndex(void) const {
708 return end;
709 }
710
711 inline int32_t
712 CharacterIterator::getIndex(void) const {
713 return pos;
714 }
715
716 inline int32_t
717 CharacterIterator::getLength(void) const {
718 return textLength;
719 }
720
721 U_NAMESPACE_END
722 #endif
icu::UObject::getDynamicClassID
virtual UClassID getDynamicClassID() const
ICU4C "poor man'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's RTTI.
Definition: uobject.h:91
U_NAMESPACE_BEGIN
#define U_NAMESPACE_BEGIN
This is used to begin a declaration of a public ICU C++ API.
Definition: uversion.h:129
icu::CharacterIterator
Abstract class that defines an API for iteration on text objects.
Definition: chariter.h:356
icu::operator!=
UBool operator!=(const StringPiece &x, const StringPiece &y)
Global operator != for StringPiece.
Definition: stringpiece.h:218
icu::CharacterIterator::textLength
int32_t textLength
Base class text length field.
Definition: chariter.h:665
UChar32
int32_t UChar32
Define UChar32 as a type for single Unicode code points.
Definition: umachine.h:332
icu::CharacterIterator::begin
int32_t begin
Base class field for the start of the iteration range.
Definition: chariter.h:677
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:312
U_NAMESPACE_END
#define U_NAMESPACE_END
This is used to end a declaration of a public ICU C++ API.
Definition: uversion.h:130
icu::CharacterIterator::pos
int32_t pos
Base class field for the current position.
Definition: chariter.h:671
icu::ForwardCharacterIterator
Abstract class that defines an API for forward-only iteration on text objects.
Definition: chariter.h:89
utypes.h
Basic definitions for ICU, for both C and C++ APIs.
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:357
icu::UnicodeString
UnicodeString is a string class that stores Unicode characters directly and provides similar function...
Definition: unistr.h:293
icu::ForwardCharacterIterator::operator=
ForwardCharacterIterator & operator=(const ForwardCharacterIterator &)
Assignment operator to be overridden in the implementing class.
Definition: chariter.h:184
icu::CharacterIterator::end
int32_t end
Base class field for the end of the iteration range.
Definition: chariter.h:683
icu::UObject
UObject is the common ICU "boilerplate" class.
Definition: uobject.h:221
icu::CharacterIterator::EOrigin
EOrigin
Origin enumeration for the move() and move32() functions.
Definition: chariter.h:362
UBool
int8_t UBool
The ICU boolean type.
Definition: umachine.h:234