ICU 54.1 54.1

- Main Page
- Related Pages
- Modules
- Namespaces
- Data Structures
- Files

- File List
- Globals

All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
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"
21 U_NAMESPACE_BEGIN
89 class U_COMMON_API ForwardCharacterIterator : public UObject {
90 public:
96 enum { DONE = 0xffff };
97
102 virtual ~ForwardCharacterIterator();
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:
175 ForwardCharacterIterator();
176
178 ForwardCharacterIterator(const ForwardCharacterIterator &other);
179
184 ForwardCharacterIterator &operator=(const ForwardCharacterIterator&) { return *this; }
185 };
186
356 class U_COMMON_API CharacterIterator : public ForwardCharacterIterator {
357 public:
362 enum EOrigin { kStart, kCurrent, kEnd };
363
368 virtual ~CharacterIterator();
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:
623 CharacterIterator();
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
649 CharacterIterator(const CharacterIterator &that);
650
658 CharacterIterator &operator=(const CharacterIterator &that);
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
687 ForwardCharacterIterator::operator!=(const ForwardCharacterIterator& that) const {
688 return !operator==(that);
689 }
690
691 inline int32_t
692 CharacterIterator::setToStart() {
693 return move(0, kStart);
694 }
695
696 inline int32_t
697 CharacterIterator::setToEnd() {
698 return move(0, kEnd);
699 }
700
701 inline int32_t
702 CharacterIterator::startIndex(void) const {
703 return begin;
704 }
705
706 inline int32_t
707 CharacterIterator::endIndex(void) const {
708 return end;
709 }
710
711 inline int32_t
712 CharacterIterator::getIndex(void) const {
713 return pos;
714 }
715
716 inline int32_t
717 CharacterIterator::getLength(void) const {
718 return textLength;
719 }
720
721 U_NAMESPACE_END
722 #endif