Index: icu46/source/common/unicode/uchriter.h |
=================================================================== |
--- icu46/source/common/unicode/uchriter.h (revision 0) |
+++ icu46/source/common/unicode/uchriter.h (revision 0) |
@@ -0,0 +1,381 @@ |
+/* |
+********************************************************************** |
+* Copyright (C) 1998-2005, International Business Machines |
+* Corporation and others. All Rights Reserved. |
+********************************************************************** |
+*/ |
+ |
+#ifndef UCHRITER_H |
+#define UCHRITER_H |
+ |
+#include "unicode/utypes.h" |
+#include "unicode/chariter.h" |
+ |
+/** |
+ * \file |
+ * \brief C++ API: UChar Character Iterator |
+ */ |
+ |
+U_NAMESPACE_BEGIN |
+ |
+/** |
+ * A concrete subclass of CharacterIterator that iterates over the |
+ * characters (code units or code points) in a UChar array. |
+ * It's possible not only to create an |
+ * iterator that iterates over an entire UChar array, but also to |
+ * create one that iterates over only a subrange of a UChar array |
+ * (iterators over different subranges of the same UChar array don't |
+ * compare equal). |
+ * @see CharacterIterator |
+ * @see ForwardCharacterIterator |
+ * @stable ICU 2.0 |
+ */ |
+class U_COMMON_API UCharCharacterIterator : public CharacterIterator { |
+public: |
+ /** |
+ * Create an iterator over the UChar array referred to by "textPtr". |
+ * The iteration range is 0 to <code>length-1</code>. |
+ * text is only aliased, not adopted (the |
+ * destructor will not delete it). |
+ * @param textPtr The UChar array to be iterated over |
+ * @param length The length of the UChar array |
+ * @stable ICU 2.0 |
+ */ |
+ UCharCharacterIterator(const UChar* textPtr, int32_t length); |
+ |
+ /** |
+ * Create an iterator over the UChar array referred to by "textPtr". |
+ * The iteration range is 0 to <code>length-1</code>. |
+ * text is only aliased, not adopted (the |
+ * destructor will not delete it). |
+ * The starting |
+ * position is specified by "position". If "position" is outside the valid |
+ * iteration range, the behavior of this object is undefined. |
+ * @param textPtr The UChar array to be iteratd over |
+ * @param length The length of the UChar array |
+ * @param position The starting position of the iteration |
+ * @stable ICU 2.0 |
+ */ |
+ UCharCharacterIterator(const UChar* textPtr, int32_t length, |
+ int32_t position); |
+ |
+ /** |
+ * Create an iterator over the UChar array referred to by "textPtr". |
+ * The iteration range is 0 to <code>end-1</code>. |
+ * text is only aliased, not adopted (the |
+ * destructor will not delete it). |
+ * The starting |
+ * position is specified by "position". If begin and end do not |
+ * form a valid iteration range or "position" is outside the valid |
+ * iteration range, the behavior of this object is undefined. |
+ * @param textPtr The UChar array to be iterated over |
+ * @param length The length of the UChar array |
+ * @param textBegin The begin position of the iteration range |
+ * @param textEnd The end position of the iteration range |
+ * @param position The starting position of the iteration |
+ * @stable ICU 2.0 |
+ */ |
+ UCharCharacterIterator(const UChar* textPtr, int32_t length, |
+ int32_t textBegin, |
+ int32_t textEnd, |
+ int32_t position); |
+ |
+ /** |
+ * Copy constructor. The new iterator iterates over the same range |
+ * of the same string as "that", and its initial position is the |
+ * same as "that"'s current position. |
+ * @param that The UCharCharacterIterator to be copied |
+ * @stable ICU 2.0 |
+ */ |
+ UCharCharacterIterator(const UCharCharacterIterator& that); |
+ |
+ /** |
+ * Destructor. |
+ * @stable ICU 2.0 |
+ */ |
+ virtual ~UCharCharacterIterator(); |
+ |
+ /** |
+ * Assignment operator. *this is altered to iterate over the sane |
+ * range of the same string as "that", and refers to the same |
+ * character within that string as "that" does. |
+ * @param that The object to be copied |
+ * @return the newly created object |
+ * @stable ICU 2.0 |
+ */ |
+ UCharCharacterIterator& |
+ operator=(const UCharCharacterIterator& that); |
+ |
+ /** |
+ * Returns true if the iterators iterate over the same range of the |
+ * same string and are pointing at the same character. |
+ * @param that The ForwardCharacterIterator used to be compared for equality |
+ * @return true if the iterators iterate over the same range of the |
+ * same string and are pointing at the same character. |
+ * @stable ICU 2.0 |
+ */ |
+ virtual UBool operator==(const ForwardCharacterIterator& that) const; |
+ |
+ /** |
+ * Generates a hash code for this iterator. |
+ * @return the hash code. |
+ * @stable ICU 2.0 |
+ */ |
+ virtual int32_t hashCode(void) const; |
+ |
+ /** |
+ * Returns a new UCharCharacterIterator referring to the same |
+ * character in the same range of the same string as this one. The |
+ * caller must delete the new iterator. |
+ * @return the CharacterIterator newly created |
+ * @stable ICU 2.0 |
+ */ |
+ virtual CharacterIterator* clone(void) const; |
+ |
+ /** |
+ * Sets the iterator to refer to the first code unit in its |
+ * iteration range, and returns that code unit. |
+ * This can be used to begin an iteration with next(). |
+ * @return the first code unit in its iteration range. |
+ * @stable ICU 2.0 |
+ */ |
+ virtual UChar first(void); |
+ |
+ /** |
+ * Sets the iterator to refer to the first code unit in its |
+ * iteration range, returns that code unit, and moves the position |
+ * to the second code unit. This is an alternative to setToStart() |
+ * for forward iteration with nextPostInc(). |
+ * @return the first code unit in its iteration range |
+ * @stable ICU 2.0 |
+ */ |
+ virtual UChar firstPostInc(void); |
+ |
+ /** |
+ * Sets the iterator to refer to the first code point in its |
+ * iteration range, and returns that code unit, |
+ * This can be used to begin an iteration with next32(). |
+ * Note that an iteration with next32PostInc(), beginning with, |
+ * e.g., setToStart() or firstPostInc(), is more efficient. |
+ * @return the first code point in its iteration range |
+ * @stable ICU 2.0 |
+ */ |
+ virtual UChar32 first32(void); |
+ |
+ /** |
+ * Sets the iterator to refer to the first code point in its |
+ * iteration range, returns that code point, and moves the position |
+ * to the second code point. This is an alternative to setToStart() |
+ * for forward iteration with next32PostInc(). |
+ * @return the first code point in its iteration range. |
+ * @stable ICU 2.0 |
+ */ |
+ virtual UChar32 first32PostInc(void); |
+ |
+ /** |
+ * Sets the iterator to refer to the last code unit in its |
+ * iteration range, and returns that code unit. |
+ * This can be used to begin an iteration with previous(). |
+ * @return the last code unit in its iteration range. |
+ * @stable ICU 2.0 |
+ */ |
+ virtual UChar last(void); |
+ |
+ /** |
+ * Sets the iterator to refer to the last code point in its |
+ * iteration range, and returns that code unit. |
+ * This can be used to begin an iteration with previous32(). |
+ * @return the last code point in its iteration range. |
+ * @stable ICU 2.0 |
+ */ |
+ virtual UChar32 last32(void); |
+ |
+ /** |
+ * Sets the iterator to refer to the "position"-th code unit |
+ * in the text-storage object the iterator refers to, and |
+ * returns that code unit. |
+ * @param position the position within the text-storage object |
+ * @return the code unit |
+ * @stable ICU 2.0 |
+ */ |
+ virtual UChar setIndex(int32_t position); |
+ |
+ /** |
+ * Sets the iterator to refer to the beginning of the code point |
+ * that contains the "position"-th code unit |
+ * in the text-storage object the iterator refers to, and |
+ * returns that code point. |
+ * The current position is adjusted to the beginning of the code point |
+ * (its first code unit). |
+ * @param position the position within the text-storage object |
+ * @return the code unit |
+ * @stable ICU 2.0 |
+ */ |
+ virtual UChar32 setIndex32(int32_t position); |
+ |
+ /** |
+ * Returns the code unit the iterator currently refers to. |
+ * @return the code unit the iterator currently refers to. |
+ * @stable ICU 2.0 |
+ */ |
+ virtual UChar current(void) const; |
+ |
+ /** |
+ * Returns the code point the iterator currently refers to. |
+ * @return the code point the iterator currently refers to. |
+ * @stable ICU 2.0 |
+ */ |
+ virtual UChar32 current32(void) const; |
+ |
+ /** |
+ * Advances to the next code unit in the iteration range (toward |
+ * endIndex()), and returns that code unit. If there are no more |
+ * code units to return, returns DONE. |
+ * @return the next code unit in the iteration range. |
+ * @stable ICU 2.0 |
+ */ |
+ virtual UChar next(void); |
+ |
+ /** |
+ * Gets the current code unit for returning and advances to the next code unit |
+ * in the iteration range |
+ * (toward endIndex()). If there are |
+ * no more code units to return, returns DONE. |
+ * @return the current code unit. |
+ * @stable ICU 2.0 |
+ */ |
+ virtual UChar nextPostInc(void); |
+ |
+ /** |
+ * Advances to the next code point in the iteration range (toward |
+ * endIndex()), and returns that code point. If there are no more |
+ * code points to return, returns DONE. |
+ * Note that iteration with "pre-increment" semantics is less |
+ * efficient than iteration with "post-increment" semantics |
+ * that is provided by next32PostInc(). |
+ * @return the next code point in the iteration range. |
+ * @stable ICU 2.0 |
+ */ |
+ virtual UChar32 next32(void); |
+ |
+ /** |
+ * Gets the current code point for returning and advances to the next code point |
+ * in the iteration range |
+ * (toward endIndex()). If there are |
+ * no more code points to return, returns DONE. |
+ * @return the current point. |
+ * @stable ICU 2.0 |
+ */ |
+ virtual UChar32 next32PostInc(void); |
+ |
+ /** |
+ * Returns FALSE if there are no more code units or code points |
+ * at or after the current position in the iteration range. |
+ * This is used with nextPostInc() or next32PostInc() in forward |
+ * iteration. |
+ * @return FALSE if there are no more code units or code points |
+ * at or after the current position in the iteration range. |
+ * @stable ICU 2.0 |
+ */ |
+ virtual UBool hasNext(); |
+ |
+ /** |
+ * Advances to the previous code unit in the iteration range (toward |
+ * startIndex()), and returns that code unit. If there are no more |
+ * code units to return, returns DONE. |
+ * @return the previous code unit in the iteration range. |
+ * @stable ICU 2.0 |
+ */ |
+ virtual UChar previous(void); |
+ |
+ /** |
+ * Advances to the previous code point in the iteration range (toward |
+ * startIndex()), and returns that code point. If there are no more |
+ * code points to return, returns DONE. |
+ * @return the previous code point in the iteration range. |
+ * @stable ICU 2.0 |
+ */ |
+ virtual UChar32 previous32(void); |
+ |
+ /** |
+ * Returns FALSE if there are no more code units or code points |
+ * before the current position in the iteration range. |
+ * This is used with previous() or previous32() in backward |
+ * iteration. |
+ * @return FALSE if there are no more code units or code points |
+ * before the current position in the iteration range. |
+ * @stable ICU 2.0 |
+ */ |
+ virtual UBool hasPrevious(); |
+ |
+ /** |
+ * Moves the current position relative to the start or end of the |
+ * iteration range, or relative to the current position itself. |
+ * The movement is expressed in numbers of code units forward |
+ * or backward by specifying a positive or negative delta. |
+ * @param delta the position relative to origin. A positive delta means forward; |
+ * a negative delta means backward. |
+ * @param origin Origin enumeration {kStart, kCurrent, kEnd} |
+ * @return the new position |
+ * @stable ICU 2.0 |
+ */ |
+ virtual int32_t move(int32_t delta, EOrigin origin); |
+ |
+ /** |
+ * Moves the current position relative to the start or end of the |
+ * iteration range, or relative to the current position itself. |
+ * The movement is expressed in numbers of code points forward |
+ * or backward by specifying a positive or negative delta. |
+ * @param delta the position relative to origin. A positive delta means forward; |
+ * a negative delta means backward. |
+ * @param origin Origin enumeration {kStart, kCurrent, kEnd} |
+ * @return the new position |
+ * @stable ICU 2.0 |
+ */ |
+ virtual int32_t move32(int32_t delta, EOrigin origin); |
+ |
+ /** |
+ * Sets the iterator to iterate over a new range of text |
+ * @stable ICU 2.0 |
+ */ |
+ void setText(const UChar* newText, int32_t newTextLength); |
+ |
+ /** |
+ * Copies the UChar array under iteration into the UnicodeString |
+ * referred to by "result". Even if this iterator iterates across |
+ * only a part of this string, the whole string is copied. |
+ * @param result Receives a copy of the text under iteration. |
+ * @stable ICU 2.0 |
+ */ |
+ virtual void getText(UnicodeString& result); |
+ |
+ /** |
+ * Return a class ID for this class (not really public) |
+ * @return a class ID for this class |
+ * @stable ICU 2.0 |
+ */ |
+ static UClassID U_EXPORT2 getStaticClassID(void); |
+ |
+ /** |
+ * Return a class ID for this object (not really public) |
+ * @return a class ID for this object. |
+ * @stable ICU 2.0 |
+ */ |
+ virtual UClassID getDynamicClassID(void) const; |
+ |
+protected: |
+ /** |
+ * Protected constructor |
+ * @stable ICU 2.0 |
+ */ |
+ UCharCharacterIterator(); |
+ /** |
+ * Protected member text |
+ * @stable ICU 2.0 |
+ */ |
+ const UChar* text; |
+ |
+}; |
+ |
+U_NAMESPACE_END |
+#endif |
Property changes on: icu46/source/common/unicode/uchriter.h |
___________________________________________________________________ |
Added: svn:eol-style |
+ LF |