]> git.saurik.com Git - apple/icu.git/blobdiff - icuSources/i18n/unicode/ucoleitr.h
ICU-64260.0.1.tar.gz
[apple/icu.git] / icuSources / i18n / unicode / ucoleitr.h
index 78f3125051236a96160c311a64eccbe8f9965c8b..b6986fcf0c20e1bc5625623444087200cb1d5127 100644 (file)
@@ -1,10 +1,12 @@
+// © 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
-*   Copyright (C) 2001-2003, International Business Machines
+*   Copyright (C) 2001-2014, International Business Machines
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *
-* File ucoleitr.cpp
+* File ucoleitr.h
 *
 * Modification History:
 *
  * to be returned.
  * @stable ICU 2.0
  */
-#define UCOL_NULLORDER        0xFFFFFFFF
+#define UCOL_NULLORDER        ((int32_t)0xFFFFFFFF)
+
+#ifndef U_HIDE_INTERNAL_API
+/**
+ * DO NOT USE, INTERNAL CONSTANT THAT WAS REMOVED AND THEN
+ * TEMPORARILY RESTORED TO PREVENT THE BUILD FROM BREAKING.
+ * This indicates an error has occured during processing or there are no more CEs
+ * to be returned.
+ *
+ * @internal
+ */
+#define UCOL_PROCESSED_NULLORDER        ((int64_t)U_INT64_MAX)
+#endif  /* U_HIDE_INTERNAL_API */
 
 #include "unicode/ucol.h"
 
@@ -45,12 +59,12 @@ typedef struct UCollationElements UCollationElements;
  * ordering priority of the positioned character. The ordering priority of a 
  * character, which we refer to as a key, defines how a character is collated 
  * in the given collation object.
- * For example, consider the following in Spanish:
+ * For example, consider the following in Slovak and in traditional Spanish collation:
  * <pre>
  * .       "ca" -> the first key is key('c') and second key is key('a').
  * .       "cha" -> the first key is key('ch') and second key is key('a').
  * </pre>
- * And in German,
+ * And in German phonebook collation,
  * <pre>
  * .       "<ae ligature>b"-> the first key is key('a'), the second key is key('e'), and
  * .       the third key is key('b').
@@ -89,10 +103,10 @@ typedef struct UCollationElements UCollationElements;
  * undefined.
  * The result of a forward iterate (ucol_next) and reversed result of the  
  * backward iterate (ucol_prev) on the same string are equivalent, if 
- * collation orders with the value UCOL_IGNORABLE are ignored.
+ * collation orders with the value 0 are ignored.
  * Character based on the comparison level of the collator.  A collation order 
  * consists of primary order, secondary order and tertiary order.  The data 
- * type of the collation order is <strong>t_int32</strong>. 
+ * type of the collation order is <strong>int32_t</strong>. 
  *
  * @see UCollator
  */
@@ -103,16 +117,17 @@ typedef struct UCollationElements UCollationElements;
  * @param coll The collator containing the desired collation rules.
  * @param text The text to iterate over.
  * @param textLength The number of characters in text, or -1 if null-terminated
- * @param status A pointer to an UErrorCode to receive any errors.
+ * @param status A pointer to a UErrorCode to receive any errors.
  * @return a struct containing collation element information
  * @stable ICU 2.0
  */
-U_CAPI UCollationElements* U_EXPORT2 
+U_STABLE UCollationElements* U_EXPORT2 
 ucol_openElements(const UCollator  *coll,
                   const UChar      *text,
                         int32_t    textLength,
                         UErrorCode *status);
 
+
 /**
  * get a hash code for a key... Not very useful!
  * @param key    the given key.
@@ -120,7 +135,7 @@ ucol_openElements(const UCollator  *coll,
  * @return       the hash code.
  * @stable ICU 2.0
  */
-U_CAPI int32_t U_EXPORT2 
+U_STABLE int32_t U_EXPORT2 
 ucol_keyHashCode(const uint8_t* key, int32_t length);
 
 /**
@@ -129,7 +144,7 @@ ucol_keyHashCode(const uint8_t* key, int32_t length);
  * @param elems The UCollationElements to close.
  * @stable ICU 2.0
  */
-U_CAPI void U_EXPORT2 
+U_STABLE void U_EXPORT2 
 ucol_closeElements(UCollationElements *elems);
 
 /**
@@ -141,40 +156,82 @@ ucol_closeElements(UCollationElements *elems);
  * @see ucol_previous
  * @stable ICU 2.0
  */
-U_CAPI void U_EXPORT2 
+U_STABLE void U_EXPORT2 
 ucol_reset(UCollationElements *elems);
 
 /**
  * Get the ordering priority of the next collation element in the text.
  * A single character may contain more than one collation element.
  * @param elems The UCollationElements containing the text.
- * @param status A pointer to an UErrorCode to receive any errors.
- * @return The next collation elements ordering, otherwise returns NULLORDER 
+ * @param status A pointer to a UErrorCode to receive any errors.
+ * @return The next collation elements ordering, otherwise returns UCOL_NULLORDER 
  *         if an error has occured or if the end of string has been reached
  * @stable ICU 2.0
  */
-U_CAPI int32_t U_EXPORT2 
+U_STABLE int32_t U_EXPORT2 
 ucol_next(UCollationElements *elems, UErrorCode *status);
 
 /**
  * Get the ordering priority of the previous collation element in the text.
  * A single character may contain more than one collation element.
  * Note that internally a stack is used to store buffered collation elements. 
- * It is very rare that the stack will overflow, however if such a case is 
- * encountered, the problem can be solved by increasing the size 
- * UCOL_EXPAND_CE_BUFFER_SIZE in ucol_imp.h.
  * @param elems The UCollationElements containing the text.
- * @param status A pointer to an UErrorCode to receive any errors. Noteably 
+ * @param status A pointer to a UErrorCode to receive any errors. Noteably 
  *               a U_BUFFER_OVERFLOW_ERROR is returned if the internal stack
  *               buffer has been exhausted.
  * @return The previous collation elements ordering, otherwise returns 
- *         NULLORDER if an error has occured or if the start of string has 
+ *         UCOL_NULLORDER if an error has occured or if the start of string has 
  *         been reached.
  * @stable ICU 2.0
  */
-U_CAPI int32_t U_EXPORT2 
+U_STABLE int32_t U_EXPORT2 
 ucol_previous(UCollationElements *elems, UErrorCode *status);
 
+#ifndef U_HIDE_INTERNAL_API
+/**
+ * DO NOT USE, INTERNAL FUNCTION THAT WAS REMOVED AND THEN
+ * TEMPORARILY RESTORED TO PREVENT THE BUILD FROM BREAKING.
+ * Get the processed ordering priority of the next collation element in the text.
+ * A single character may contain more than one collation element.
+ *
+ * @param elems The UCollationElements containing the text.
+ * @param ixLow a pointer to an int32_t to receive the iterator index before fetching the CE.
+ * @param ixHigh a pointer to an int32_t to receive the iterator index after fetching the CE.
+ * @param status A pointer to an UErrorCode to receive any errors.
+ * @return The next collation elements ordering, otherwise returns UCOL_PROCESSED_NULLORDER
+ *         if an error has occured or if the end of string has been reached
+ *
+ * @internal
+ */
+U_INTERNAL int64_t U_EXPORT2
+ucol_nextProcessed(UCollationElements *elems, int32_t *ixLow, int32_t *ixHigh, UErrorCode *status);
+
+/**
+ * DO NOT USE, INTERNAL FUNCTION THAT WAS REMOVED AND THEN
+ * TEMPORARILY RESTORED TO PREVENT THE BUILD FROM BREAKING.
+ * Get the processed ordering priority of the previous collation element in the text.
+ * A single character may contain more than one collation element.
+ * Note that internally a stack is used to store buffered collation elements.
+ * It is very rare that the stack will overflow, however if such a case is
+ * encountered, the problem can be solved by increasing the size
+ * UCOL_EXPAND_CE_BUFFER_SIZE in ucol_imp.h.
+ *
+ * @param elems The UCollationElements containing the text.
+ * @param ixLow A pointer to an int32_t to receive the iterator index after fetching the CE
+ * @param ixHigh A pointer to an int32_t to receiver the iterator index before fetching the CE
+ * @param status A pointer to an UErrorCode to receive any errors. Noteably
+ *               a U_BUFFER_OVERFLOW_ERROR is returned if the internal stack
+ *               buffer has been exhausted.
+ * @return The previous collation elements ordering, otherwise returns
+ *         UCOL_PROCESSED_NULLORDER if an error has occured or if the start of
+ *         string has been reached.
+ *
+ * @internal
+ */
+U_INTERNAL int64_t U_EXPORT2
+ucol_previousProcessed(UCollationElements *elems, int32_t *ixLow, int32_t *ixHigh, UErrorCode *status);
+#endif  /* U_HIDE_INTERNAL_API */
+
 /**
  * Get the maximum length of any expansion sequences that end with the 
  * specified comparison order.
@@ -186,7 +243,7 @@ ucol_previous(UCollationElements *elems, UErrorCode *status);
  *         expansion sequence
  * @stable ICU 2.0
  */
-U_CAPI int32_t U_EXPORT2 
+U_STABLE int32_t U_EXPORT2 
 ucol_getMaxExpansion(const UCollationElements *elems, int32_t order);
 
 /**
@@ -197,11 +254,11 @@ ucol_getMaxExpansion(const UCollationElements *elems, int32_t order);
  * @param elems The UCollationElements to set.
  * @param text The source text containing the collation elements.
  * @param textLength The length of text, or -1 if null-terminated.
- * @param status A pointer to an UErrorCode to receive any errors.
+ * @param status A pointer to a UErrorCode to receive any errors.
  * @see ucol_getText
  * @stable ICU 2.0
  */
-U_CAPI void U_EXPORT2 
+U_STABLE void U_EXPORT2 
 ucol_setText(      UCollationElements *elems, 
              const UChar              *text,
                    int32_t            textLength,
@@ -216,7 +273,7 @@ ucol_setText(      UCollationElements *elems,
  * @see ucol_setOffset
  * @stable ICU 2.0
  */
-U_CAPI int32_t U_EXPORT2 
+U_STABLE int32_t U_EXPORT2 
 ucol_getOffset(const UCollationElements *elems);
 
 /**
@@ -227,11 +284,11 @@ ucol_getOffset(const UCollationElements *elems);
  * the API reset() has to be called.
  * @param elems The UCollationElements to set.
  * @param offset The desired character offset.
- * @param status A pointer to an UErrorCode to receive any errors.
+ * @param status A pointer to a UErrorCode to receive any errors.
  * @see ucol_getOffset
  * @stable ICU 2.0
  */
-U_CAPI void U_EXPORT2 
+U_STABLE void U_EXPORT2 
 ucol_setOffset(UCollationElements *elems,
                int32_t        offset,
                UErrorCode         *status);
@@ -240,27 +297,27 @@ ucol_setOffset(UCollationElements *elems,
 * Get the primary order of a collation order.
 * @param order the collation order
 * @return the primary order of a collation order.
-* @draft ICU 2.6
+* @stable ICU 2.6
 */
-U_CAPI int32_t U_EXPORT2
+U_STABLE int32_t U_EXPORT2
 ucol_primaryOrder (int32_t order); 
 
 /**
 * Get the secondary order of a collation order.
 * @param order the collation order
 * @return the secondary order of a collation order.
-* @draft ICU 2.6
+* @stable ICU 2.6
 */
-U_CAPI int32_t U_EXPORT2
+U_STABLE int32_t U_EXPORT2
 ucol_secondaryOrder (int32_t order); 
 
 /**
 * Get the tertiary order of a collation order.
 * @param order the collation order
 * @return the tertiary order of a collation order.
-* @draft ICU 2.6
+* @stable ICU 2.6
 */
-U_CAPI int32_t U_EXPORT2
+U_STABLE int32_t U_EXPORT2
 ucol_tertiaryOrder (int32_t order); 
 
 #endif /* #if !UCONFIG_NO_COLLATION */