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"
90 public:
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 
173 protected:
176 
179 
185 };
186 
357 public:
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 
618 protected:
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 
686 inline UBool
688  return !operator==(that);
689 }
690 
691 inline int32_t
693  return move(0, kStart);
694 }
695 
696 inline int32_t
698  return move(0, kEnd);
699 }
700 
701 inline int32_t
703  return begin;
704 }
705 
706 inline int32_t
708  return end;
709 }
710 
711 inline int32_t
713  return pos;
714 }
715 
716 inline 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...
CharacterIterator & operator=(const CharacterIterator &that)
Assignment operator.
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
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 CharacterIterator * clone(void) const =0
Returns a pointer to a new CharacterIterator of the same concrete class as this one,...
virtual UChar32 current32(void) const =0
Returns the code point the iterator currently refers to.
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...
ForwardCharacterIterator & operator=(const ForwardCharacterIterator &)
Assignment operator to be overridden in the implementing class.
Definition: chariter.h:184
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
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