os/textandloc/fontservices/textshaperplugin/IcuSource/common/unicode/schriter.h
author sl
Tue, 10 Jun 2014 14:32:02 +0200
changeset 1 260cb5ec6c19
permissions -rw-r--r--
Update contrib.
     1 /*
     2 ******************************************************************************
     3 *
     4 *   Copyright (C) 1998-2005, International Business Machines
     5 *   Corporation and others.  All Rights Reserved.
     6 *
     7 ******************************************************************************
     8 *
     9 * File schriter.h
    10 *
    11 * Modification History:
    12 *
    13 *   Date        Name        Description
    14 *  05/05/99     stephen     Cleaned up.
    15 ******************************************************************************
    16 */
    17 
    18 #ifndef SCHRITER_H
    19 #define SCHRITER_H
    20 
    21 #include "unicode/utypes.h"
    22 #include "unicode/chariter.h"
    23 #include "unicode/uchriter.h"
    24 
    25 /**
    26  * \file 
    27  * \brief C++ API: String Character Iterator
    28  */
    29  
    30 U_NAMESPACE_BEGIN
    31 /**
    32  * A concrete subclass of CharacterIterator that iterates over the
    33  * characters (code units or code points) in a UnicodeString.
    34  * It's possible not only to create an
    35  * iterator that iterates over an entire UnicodeString, but also to
    36  * create one that iterates over only a subrange of a UnicodeString
    37  * (iterators over different subranges of the same UnicodeString don't
    38  * compare equal).
    39  * @see CharacterIterator
    40  * @see ForwardCharacterIterator
    41  * @stable ICU 2.0
    42  */
    43 class U_COMMON_API StringCharacterIterator : public UCharCharacterIterator {
    44 public:
    45   /**
    46    * Create an iterator over the UnicodeString referred to by "textStr".
    47    * The UnicodeString object is copied.
    48    * The iteration range is the whole string, and the starting position is 0.
    49    * @param textStr The unicode string used to create an iterator
    50    * @stable ICU 2.0
    51    */
    52   StringCharacterIterator(const UnicodeString& textStr);
    53 
    54   /**
    55    * Create an iterator over the UnicodeString referred to by "textStr".
    56    * The iteration range is the whole string, and the starting
    57    * position is specified by "textPos".  If "textPos" is outside the valid
    58    * iteration range, the behavior of this object is undefined.
    59    * @param textStr The unicode string used to create an iterator
    60    * @param textPos The starting position of the iteration
    61    * @stable ICU 2.0
    62    */
    63   StringCharacterIterator(const UnicodeString&    textStr,
    64               int32_t              textPos);
    65 
    66   /**
    67    * Create an iterator over the UnicodeString referred to by "textStr".
    68    * The UnicodeString object is copied.
    69    * The iteration range begins with the code unit specified by
    70    * "textBegin" and ends with the code unit BEFORE the code unit specfied
    71    * by "textEnd".  The starting position is specified by "textPos".  If
    72    * "textBegin" and "textEnd" don't form a valid range on "text" (i.e.,
    73    * textBegin >= textEnd or either is negative or greater than text.size()),
    74    * or "textPos" is outside the range defined by "textBegin" and "textEnd",
    75    * the behavior of this iterator is undefined.
    76    * @param textStr    The unicode string used to create the StringCharacterIterator
    77    * @param textBegin  The begin position of the iteration range
    78    * @param textEnd    The end position of the iteration range
    79    * @param textPos    The starting position of the iteration
    80    * @stable ICU 2.0
    81    */
    82   StringCharacterIterator(const UnicodeString&    textStr,
    83               int32_t              textBegin,
    84               int32_t              textEnd,
    85               int32_t              textPos);
    86 
    87   /**
    88    * Copy constructor.  The new iterator iterates over the same range
    89    * of the same string as "that", and its initial position is the
    90    * same as "that"'s current position.
    91    * The UnicodeString object in "that" is copied.
    92    * @param that The StringCharacterIterator to be copied
    93    * @stable ICU 2.0
    94    */
    95   StringCharacterIterator(const StringCharacterIterator&  that);
    96 
    97   /**
    98    * Destructor.
    99    * @stable ICU 2.0
   100    */
   101   virtual ~StringCharacterIterator();
   102 
   103   /**
   104    * Assignment operator.  *this is altered to iterate over the same
   105    * range of the same string as "that", and refers to the same
   106    * character within that string as "that" does.
   107    * @param that The object to be copied.
   108    * @return the newly created object.
   109    * @stable ICU 2.0
   110    */
   111   StringCharacterIterator&
   112   operator=(const StringCharacterIterator&    that);
   113 
   114   /**
   115    * Returns true if the iterators iterate over the same range of the
   116    * same string and are pointing at the same character.
   117    * @param that The ForwardCharacterIterator to be compared for equality
   118    * @return true if the iterators iterate over the same range of the
   119    * same string and are pointing at the same character.
   120    * @stable ICU 2.0
   121    */
   122   virtual UBool          operator==(const ForwardCharacterIterator& that) const;
   123 
   124   /**
   125    * Returns a new StringCharacterIterator referring to the same
   126    * character in the same range of the same string as this one.  The
   127    * caller must delete the new iterator.
   128    * @return the newly cloned object.
   129    * @stable ICU 2.0
   130    */
   131   virtual CharacterIterator* clone(void) const;
   132 
   133   /**
   134    * Sets the iterator to iterate over the provided string.
   135    * @param newText The string to be iterated over
   136    * @stable ICU 2.0
   137    */
   138   void setText(const UnicodeString& newText);
   139 
   140   /**
   141    * Copies the UnicodeString under iteration into the UnicodeString
   142    * referred to by "result".  Even if this iterator iterates across
   143    * only a part of this string, the whole string is copied.
   144    * @param result Receives a copy of the text under iteration.
   145    * @stable ICU 2.0
   146    */
   147   virtual void            getText(UnicodeString& result);
   148 
   149   /**
   150    * Return a class ID for this object (not really public)
   151    * @return a class ID for this object.
   152    * @stable ICU 2.0
   153    */
   154   virtual UClassID         getDynamicClassID(void) const;
   155 
   156   /**
   157    * Return a class ID for this class (not really public)
   158    * @return a class ID for this class
   159    * @stable ICU 2.0
   160    */
   161   static UClassID   U_EXPORT2 getStaticClassID(void);
   162 
   163 protected:
   164   /**
   165    * Default constructor, iteration over empty string.
   166    * @stable ICU 2.0
   167    */
   168   StringCharacterIterator();
   169 
   170   /**
   171    * Sets the iterator to iterate over the provided string.
   172    * @param newText The string to be iterated over
   173    * @param newTextLength The length of the String
   174    * @stable ICU 2.0
   175    */
   176   void setText(const UChar* newText, int32_t newTextLength);
   177 
   178   /**
   179    * Copy of the iterated string object.
   180    * @stable ICU 2.0
   181    */
   182   UnicodeString            text;
   183 
   184 };
   185 
   186 U_NAMESPACE_END
   187 #endif