ICU 57.1 57.1
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"
90public:
96 enum { DONE = 0xffff };
97
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
173protected:
176
179
185};
186
357public:
362 enum EOrigin { kStart, kCurrent, kEnd };
363
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
618protected:
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
650
659
665 int32_t textLength;
666
671 int32_t pos;
672
677 int32_t begin;
678
683 int32_t end;
684};
685
686inline UBool
688 return !operator==(that);
689}
690
691inline int32_t
693 return move(0, kStart);
694}
695
696inline int32_t
698 return move(0, kEnd);
699}
700
701inline int32_t
703 return begin;
704}
705
706inline int32_t
708 return end;
709}
710
711inline int32_t
713 return pos;
714}
715
716inline int32_t
718 return textLength;
719}
720
722#endif
Abstract class that defines an API for iteration on text objects.
Definition: chariter.h:356
virtual void getText(UnicodeString &result)=0
Copies the text under iteration into the UnicodeString referred to by "result".
virtual UChar 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()
Empty constructor.
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(void)=0
Sets the iterator to refer to the first code point in its iteration range, and returns that code unit...
int32_t pos
Base class field for the current position.
Definition: chariter.h:671
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 setToEnd()
Sets the iterator to the end of its iteration range, just behind the last code unit or code point.
Definition: chariter.h:697
int32_t startIndex(void) const
Returns the numeric index in the underlying text-storage object of the character returned by first().
Definition: chariter.h:702
CharacterIterator(int32_t length, int32_t position)
Constructor, just setting the length and position fields in this base class.
CharacterIterator(int32_t length)
Constructor, just setting the length field in this base class.
CharacterIterator(const CharacterIterator &that)
Copy constructor.
virtual UChar current(void) const =0
Returns the code unit the iterator currently refers to.
int32_t setToStart()
Sets the iterator to refer to the first code unit or code point in its 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...
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.
virtual UBool hasPrevious()=0
Returns FALSE if there are no more code units or code points before the current position in the itera...
virtual UChar previous(void)=0
Advances to the previous code unit in the iteration range (toward startIndex()), and returns that cod...
int32_t getIndex(void) const
Returns the numeric index in the underlying text-storage object of the character the iterator current...
Definition: chariter.h:712
int32_t endIndex(void) const
Returns the numeric index in the underlying text-storage object of the position immediately BEYOND th...
Definition: chariter.h:707
CharacterIterator & operator=(const CharacterIterator &that)
Assignment operator.
virtual UChar next(void)=0
Advances to the next code unit in the iteration range (toward endIndex()), and returns that code unit...
virtual UChar32 last32(void)=0
Sets the iterator to refer to the last code point in its iteration range, and returns that code unit.
virtual UChar32 next32(void)=0
Advances to the next code point in the iteration range (toward endIndex()), and returns that code poi...
virtual UChar32 previous32(void)=0
Advances to the previous code point in the iteration range (toward startIndex()), and returns that co...
virtual UChar32 first32PostInc(void)
Sets the iterator to refer to the first code point in its iteration range, returns that code point,...
int32_t textLength
Base class text length field.
Definition: chariter.h:665
EOrigin
Origin enumeration for the move() and move32() functions.
Definition: chariter.h:362
int32_t getLength() const
Returns the length of the entire text in the underlying text-storage object.
Definition: chariter.h:717
int32_t begin
Base class field for the start of the iteration range.
Definition: chariter.h:677
virtual UChar last(void)=0
Sets the iterator to refer to the last code unit in its iteration range, and returns that code unit.
virtual ~CharacterIterator()
Destructor.
virtual UChar32 current32(void) const =0
Returns the code point the iterator currently refers to.
virtual CharacterIterator * clone(void) const =0
Returns a pointer to a new CharacterIterator of the same concrete class as this one,...
int32_t end
Base class field for the end of the iteration range.
Definition: chariter.h:683
virtual UChar first(void)=0
Sets the iterator to refer to the first code unit in its iteration range, and returns that code unit.
virtual UChar firstPostInc(void)
Sets the iterator to refer to the first code unit in its iteration range, returns that code unit,...
Abstract class that defines an API for forward-only iteration on text objects.
Definition: chariter.h:89
virtual int32_t hashCode(void) const =0
Generates a hash code for this iterator.
ForwardCharacterIterator(const ForwardCharacterIterator &other)
Copy constructor to be overridden in the implementing class.
virtual UBool operator==(const ForwardCharacterIterator &that) const =0
Returns true when both iterators refer to the same character in the same character-storage object.
virtual ~ForwardCharacterIterator()
Destructor.
virtual UChar nextPostInc(void)=0
Gets the current code unit for returning and advances to the next code unit in the iteration range (t...
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 UClassID getDynamicClassID(void) const =0
Returns a UClassID for this ForwardCharacterIterator ("poor man's RTTI").
virtual UChar32 next32PostInc(void)=0
Gets the current code point for returning and advances to the next code point in the iteration range ...
ForwardCharacterIterator()
Default constructor to be overridden in the implementing class.
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:687
ForwardCharacterIterator & operator=(const ForwardCharacterIterator &)
Assignment operator to be overridden in the implementing class.
Definition: chariter.h:184
UObject is the common ICU "boilerplate" class.
Definition: uobject.h:221
UnicodeString is a string class that stores Unicode characters directly and provides similar function...
Definition: unistr.h:294
UBool operator!=(const StringPiece &x, const StringPiece &y)
Global operator != for StringPiece.
Definition: stringpiece.h:218
int32_t UChar32
Define UChar32 as a type for single Unicode code points.
Definition: umachine.h:332
int8_t UBool
The ICU boolean type.
Definition: umachine.h:234
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
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:91
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:357
#define U_NAMESPACE_END
This is used to end a declaration of a public ICU C++ API.
Definition: uversion.h:130
#define U_NAMESPACE_BEGIN
This is used to begin a declaration of a public ICU C++ API.
Definition: uversion.h:129