ICU4C 79
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"
25
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 return *this;
191 }
192};
193
364public:
369 enum EOrigin { kStart, kCurrent, kEnd };
370
376
385 virtual CharacterIterator* clone() const = 0;
386
394 virtual char16_t first() = 0;
395
404 virtual char16_t firstPostInc();
405
415 virtual UChar32 first32() = 0;
416
426
434 inline int32_t setToStart();
435
443 virtual char16_t last() = 0;
444
452 virtual UChar32 last32() = 0;
453
461 inline int32_t setToEnd();
462
471 virtual char16_t setIndex(int32_t position) = 0;
472
484 virtual UChar32 setIndex32(int32_t position) = 0;
485
491 virtual char16_t current() const = 0;
492
498 virtual UChar32 current32() const = 0;
499
507 virtual char16_t next() = 0;
508
519 virtual UChar32 next32() = 0;
520
528 virtual char16_t previous() = 0;
529
537 virtual UChar32 previous32() = 0;
538
548 virtual UBool hasPrevious() = 0;
549
560 inline int32_t startIndex() const;
561
571 inline int32_t endIndex() const;
572
581 inline int32_t getIndex() const;
582
589 inline int32_t getLength() const;
590
602 virtual int32_t move(int32_t delta, EOrigin origin) = 0;
603
615#ifdef move32
616 // One of the system headers right now is sometimes defining a conflicting macro we don't use
617#undef move32
618#endif
619 virtual int32_t move32(int32_t delta, EOrigin origin) = 0;
620
627 virtual void getText(UnicodeString& result) = 0;
628
629protected:
635
640 CharacterIterator(int32_t length);
641
646 CharacterIterator(int32_t length, int32_t position);
647
652 CharacterIterator(int32_t length, int32_t textBegin, int32_t textEnd, int32_t position);
653
661
669 CharacterIterator& operator=(const CharacterIterator& that) U_LIFETIME_BOUND;
670
676 int32_t textLength;
677
682 int32_t pos;
683
688 int32_t begin;
689
694 int32_t end;
695};
696
697inline bool
701
702inline int32_t
704 return move(0, kStart);
705}
706
707inline int32_t
709 return move(0, kEnd);
710}
711
712inline int32_t
714 return begin;
715}
716
717inline int32_t
719 return end;
720}
721
722inline int32_t
724 return pos;
725}
726
727inline int32_t
729 return textLength;
730}
731
732U_NAMESPACE_END
733
734#endif /* U_SHOW_CPLUSPLUS_API */
735
736#endif
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:369
int32_t textLength
Base class text length field.
Definition chariter.h:676
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.
int32_t endIndex() const
Returns the numeric index in the underlying text-storage object of the position immediately BEYOND th...
Definition chariter.h:718
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:688
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:682
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:694
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...
int32_t getIndex() const
Returns the numeric index in the underlying text-storage object of the character the iterator current...
Definition chariter.h:723
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.
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:708
int32_t setToStart()
Sets the iterator to refer to the first code unit or code point in its iteration range.
Definition chariter.h:703
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.
int32_t startIndex() const
Returns the numeric index in the underlying text-storage object of the character returned by first().
Definition chariter.h:713
int32_t getLength() const
Returns the length of the entire text in the underlying text-storage object.
Definition chariter.h:728
virtual UClassID getDynamicClassID() const override=0
Returns a UClassID for this ForwardCharacterIterator ("poor man'sRTTI").
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 ...
bool operator!=(const ForwardCharacterIterator &that) const
Returns true when the iterators refer to different text-storage objects, or to different characters i...
Definition chariter.h:698
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:222
UnicodeString is a string class that stores Unicode characters directly and provides similar function...
Definition unistr.h:303
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:449
int8_t UBool
The ICU boolean type, a signed-byte integer.
Definition umachine.h:269
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