ICU 59.1  59.1
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 #include "unicode/uobject.h"
17 #include "unicode/unistr.h"
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 char16_t nextPostInc(void) = 0;
153 
162  virtual UChar32 next32PostInc(void) = 0;
163 
173  virtual UBool hasNext() = 0;
174 
175 protected:
178 
181 
187 };
188 
359 public:
364  enum EOrigin { kStart, kCurrent, kEnd };
365 
370  virtual ~CharacterIterator();
371 
380  virtual CharacterIterator* clone(void) const = 0;
381 
389  virtual char16_t first(void) = 0;
390 
399  virtual char16_t firstPostInc(void);
400 
410  virtual UChar32 first32(void) = 0;
411 
420  virtual UChar32 first32PostInc(void);
421 
429  inline int32_t setToStart();
430 
438  virtual char16_t last(void) = 0;
439 
447  virtual UChar32 last32(void) = 0;
448 
456  inline int32_t setToEnd();
457 
466  virtual char16_t setIndex(int32_t position) = 0;
467 
479  virtual UChar32 setIndex32(int32_t position) = 0;
480 
486  virtual char16_t current(void) const = 0;
487 
493  virtual UChar32 current32(void) const = 0;
494 
502  virtual char16_t next(void) = 0;
503 
514  virtual UChar32 next32(void) = 0;
515 
523  virtual char16_t 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 #ifdef move32
611  // One of the system headers right now is sometimes defining a conflicting macro we don't use
612 #undef move32
613 #endif
614  virtual int32_t move32(int32_t delta, EOrigin origin) = 0;
615 
622  virtual void getText(UnicodeString& result) = 0;
623 
624 protected:
630 
635  CharacterIterator(int32_t length);
636 
641  CharacterIterator(int32_t length, int32_t position);
642 
647  CharacterIterator(int32_t length, int32_t textBegin, int32_t textEnd, int32_t position);
648 
656 
665 
671  int32_t textLength;
672 
677  int32_t pos;
678 
683  int32_t begin;
684 
689  int32_t end;
690 };
691 
692 inline UBool
694  return !operator==(that);
695 }
696 
697 inline int32_t
699  return move(0, kStart);
700 }
701 
702 inline int32_t
704  return move(0, kEnd);
705 }
706 
707 inline int32_t
709  return begin;
710 }
711 
712 inline int32_t
714  return end;
715 }
716 
717 inline int32_t
719  return pos;
720 }
721 
722 inline int32_t
724  return textLength;
725 }
726 
728 #endif
int32_t endIndex(void) const
Returns the numeric index in the underlying text-storage object of the position immediately BEYOND th...
Definition: chariter.h:713
C++ API: Unicode String.
U_EXPORT UBool operator==(const StringPiece &x, const StringPiece &y)
Global operator == for StringPiece.
void * UClassID
UClassID is used to identify classes without using the compiler's RTTI.
Definition: uobject.h:93
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:703
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:693
int32_t getIndex(void) const
Returns the numeric index in the underlying text-storage object of the character the iterator current...
Definition: chariter.h:718
#define U_NAMESPACE_BEGIN
This is used to begin a declaration of a public ICU C++ API.
Definition: uversion.h:131
Abstract class that defines an API for iteration on text objects.
Definition: chariter.h:358
UBool operator!=(const StringPiece &x, const StringPiece &y)
Global operator != for StringPiece.
Definition: stringpiece.h:218
int32_t setToStart()
Sets the iterator to refer to the first code unit or code point in its iteration range.
Definition: chariter.h:698
int32_t textLength
Base class text length field.
Definition: chariter.h:671
int32_t UChar32
Define UChar32 as a type for single Unicode code points.
Definition: umachine.h:396
virtual UClassID getDynamicClassID() const
ICU4C "poor man's RTTI", returns a UClassID for the actual ICU class.
int32_t begin
Base class field for the start of the iteration range.
Definition: chariter.h:683
C++ API: Common ICU base class UObject.
#define U_NAMESPACE_END
This is used to end a declaration of a public ICU C++ API.
Definition: uversion.h:132
int32_t pos
Base class field for the current position.
Definition: chariter.h:677
int32_t getLength() const
Returns the length of the entire text in the underlying text-storage object.
Definition: chariter.h:723
int32_t startIndex(void) const
Returns the numeric index in the underlying text-storage object of the character returned by first()...
Definition: chariter.h:708
Abstract class that defines an API for forward-only iteration on text objects.
Definition: chariter.h:91
Basic definitions for ICU, for both C and C++ APIs.
virtual UBool operator==(const ForwardCharacterIterator &that) const =0
Returns true when both iterators refer to the same character in the same character-storage object...
#define U_COMMON_API
Set to export library symbols from inside the common library, and to import them from outside...
Definition: utypes.h:359
UnicodeString is a string class that stores Unicode characters directly and provides similar function...
Definition: unistr.h:296
ForwardCharacterIterator & operator=(const ForwardCharacterIterator &)
Assignment operator to be overridden in the implementing class.
Definition: chariter.h:186
int32_t end
Base class field for the end of the iteration range.
Definition: chariter.h:689
UObject is the common ICU "boilerplate" class.
Definition: uobject.h:223
EOrigin
Origin enumeration for the move() and move32() functions.
Definition: chariter.h:364
int8_t UBool
The ICU boolean type.
Definition: umachine.h:236