Home | History | Annotate | Download | only in intltest
      1 // Copyright (C) 2016 and later: Unicode, Inc. and others.
      2 // License & terms of use: http://www.unicode.org/copyright.html
      3 /********************************************************************
      4  * COPYRIGHT:
      5  * Copyright (c) 1997-2003, International Business Machines Corporation and
      6  * others. All Rights Reserved.
      7  ********************************************************************/
      8 
      9 #ifndef SFDWCHIT_H
     10 #define SFDWCHIT_H
     11 
     12 #include "unicode/chariter.h"
     13 #include "intltest.h"
     14 
     15 class SimpleFwdCharIterator : public ForwardCharacterIterator {
     16 public:
     17     // not used -- SimpleFwdCharIterator(const UnicodeString& s);
     18     SimpleFwdCharIterator(UChar *s, int32_t len, UBool adopt = FALSE);
     19 
     20     virtual ~SimpleFwdCharIterator();
     21 
     22   /**
     23    * Returns true when both iterators refer to the same
     24    * character in the same character-storage object.
     25    */
     26   // not used -- virtual UBool operator==(const ForwardCharacterIterator& that) const;
     27 
     28   /**
     29    * Generates a hash code for this iterator.
     30    */
     31   virtual int32_t hashCode(void) const;
     32 
     33   /**
     34    * Returns a UClassID for this ForwardCharacterIterator ("poor man's
     35    * RTTI").<P> Despite the fact that this function is public,
     36    * DO NOT CONSIDER IT PART OF CHARACTERITERATOR'S API!
     37    */
     38   virtual UClassID getDynamicClassID(void) const;
     39 
     40   /**
     41    * Gets the current code unit for returning and advances to the next code unit
     42    * in the iteration range
     43    * (toward endIndex()).  If there are
     44    * no more code units to return, returns DONE.
     45    */
     46   virtual UChar         nextPostInc(void);
     47 
     48   /**
     49    * Gets the current code point for returning and advances to the next code point
     50    * in the iteration range
     51    * (toward endIndex()).  If there are
     52    * no more code points to return, returns DONE.
     53    */
     54   virtual UChar32       next32PostInc(void);
     55 
     56   /**
     57    * Returns FALSE if there are no more code units or code points
     58    * at or after the current position in the iteration range.
     59    * This is used with nextPostInc() or next32PostInc() in forward
     60    * iteration.
     61    */
     62   virtual UBool        hasNext();
     63 
     64 protected:
     65     SimpleFwdCharIterator() {}
     66     SimpleFwdCharIterator(const SimpleFwdCharIterator &other)
     67         : ForwardCharacterIterator(other) {}
     68     SimpleFwdCharIterator &operator=(const SimpleFwdCharIterator&) { return *this; }
     69 private:
     70     static const int32_t            kInvalidHashCode;
     71     static const int32_t            kEmptyHashCode;
     72 
     73     UChar *fStart, *fEnd, *fCurrent;
     74     int32_t fLen;
     75     UBool fBogus;
     76     int32_t fHashCode;
     77 };
     78 
     79 #endif
     80