- /**
- * Origin enumeration for the move() and move32() functions.
- * @stable ICU 2.0
- */
- enum EOrigin { kStart, kCurrent, kEnd };
-
- /**
- * Returns a pointer to a new CharacterIterator of the same
- * concrete class as this one, and referring to the same
- * character in the same text-storage object as this one. The
- * caller is responsible for deleting the new clone.
- * @return a pointer to a new CharacterIterator
- * @stable ICU 2.0
- */
- virtual CharacterIterator* clone(void) const = 0;
-
- /**
- * 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) = 0;
-
- /**
- * 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) = 0;
-
- /**
- * 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 first code unit or code point in its
- * iteration range. This can be used to begin a forward
- * iteration with nextPostInc() or next32PostInc().
- * @return the start position of the iteration range
- * @stable ICU 2.0
- */
- inline int32_t setToStart();
-
- /**
- * 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.
- * @stable ICU 2.0
- */
- virtual UChar last(void) = 0;
+ /**
+ * Origin enumeration for the move() and move32() functions.
+ * @stable ICU 2.0
+ */
+ enum EOrigin { kStart, kCurrent, kEnd };
+
+ /**
+ * Destructor.
+ * @stable ICU 2.0
+ */
+ virtual ~CharacterIterator();
+
+ /**
+ * Returns a pointer to a new CharacterIterator of the same
+ * concrete class as this one, and referring to the same
+ * character in the same text-storage object as this one. The
+ * caller is responsible for deleting the new clone.
+ * @return a pointer to a new CharacterIterator
+ * @stable ICU 2.0
+ */
+ virtual CharacterIterator* clone(void) const = 0;
+
+ /**
+ * 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 char16_t first(void) = 0;
+
+ /**
+ * 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 char16_t 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) = 0;
+
+ /**
+ * 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 first code unit or code point in its
+ * iteration range. This can be used to begin a forward
+ * iteration with nextPostInc() or next32PostInc().
+ * @return the start position of the iteration range
+ * @stable ICU 2.0
+ */
+ inline int32_t setToStart();
+
+ /**
+ * 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.
+ * @stable ICU 2.0
+ */
+ virtual char16_t last(void) = 0;