ICU 58.2  58.2
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"
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:
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 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:
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 
652 
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
690  return !operator==(that);
691 }
692 
693 inline int32_t
695  return move(0, kStart);
696 }
697 
698 inline int32_t
700  return move(0, kEnd);
701 }
702 
703 inline int32_t
705  return begin;
706 }
707 
708 inline int32_t
710  return end;
711 }
712 
713 inline int32_t
715  return pos;
716 }
717 
718 inline int32_t
720  return textLength;
721 }
722 
724 #endif
virtual UClassID getDynamicClassID() const
ICU4C "poor man's RTTI", returns a UClassID for the actual ICU class.
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:699
#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
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
UBool operator!=(const StringPiece &x, const StringPiece &y)
Global operator != for StringPiece.
Definition: stringpiece.h:220
int32_t setToStart()
Sets the iterator to refer to the first code unit or code point in its iteration range.
Definition: chariter.h:694
int32_t textLength
Base class text length field.
Definition: chariter.h:667
int32_t UChar32
Define UChar32 as a type for single Unicode code points.
Definition: umachine.h:357
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
int32_t begin
Base class field for the start of the iteration range.
Definition: chariter.h:679
C++ API: Common ICU base class UObject.
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
#define U_NAMESPACE_END
This is used to end a declaration of a public ICU C++ API.
Definition: uversion.h:132
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
int32_t pos
Base class field for the current position.
Definition: chariter.h:673
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.
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
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:295
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:685
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:259
int32_t getLength() const
Returns the length of the entire text in the underlying text-storage object.
Definition: chariter.h:719