Main Page | Class Hierarchy | Alphabetical List | Data Structures | Directories | File List | Data Fields | Globals | Related Pages

ucol.h

Go to the documentation of this file.
00001 /*
00002 *******************************************************************************
00003 * Copyright (c) {1996-2001}, International Business Machines Corporation and others.
00004 * All Rights Reserved.
00005 *******************************************************************************
00006 */
00007 
00008 #ifndef UCOL_H
00009 #define UCOL_H
00010 
00011 #include "unicode/utypes.h"
00012 #include "unicode/unorm.h"
00013 #include "unicode/parseerr.h"
00014 #include "unicode/uloc.h"
00015 
00052 struct collIterate;
00054 typedef struct collIterate collIterate;
00055 
00059 struct UCollator;
00061 typedef struct UCollator UCollator;
00062 
00063 
00074 typedef enum {
00076   UCOL_EQUAL    = 0,
00078   UCOL_GREATER    = 1,
00080   UCOL_LESS    = -1
00081 } UCollationResult ;
00082 
00083 
00085 /* Here are all the allowable values. Not every attribute can take every value. The only */
00086 /* universal value is UCOL_DEFAULT, which resets the attribute value to the predefined  */
00087 /* value for that locale */
00088 typedef enum {
00090   UCOL_DEFAULT = -1,
00091 
00093   UCOL_PRIMARY = 0,
00095   UCOL_SECONDARY = 1,
00097   UCOL_TERTIARY = 2,
00099   UCOL_DEFAULT_STRENGTH = UCOL_TERTIARY,
00100   UCOL_CE_STRENGTH_LIMIT,
00102   UCOL_QUATERNARY=3,
00104   UCOL_IDENTICAL=15,
00105   UCOL_STRENGTH_LIMIT,
00106 
00110   UCOL_OFF = 16,
00114   UCOL_ON = 17,
00115   
00117   UCOL_SHIFTED = 20,
00119   UCOL_NON_IGNORABLE = 21,
00120 
00123   UCOL_LOWER_FIRST = 24,
00125   UCOL_UPPER_FIRST = 25,
00126 
00130   UCOL_ON_WITHOUT_HANGUL = 28,
00131 
00132   UCOL_ATTRIBUTE_VALUE_COUNT
00133 
00134 } UColAttributeValue;
00135 
00161 typedef UColAttributeValue UCollationStrength;
00162 
00165 typedef enum {
00170      UCOL_FRENCH_COLLATION, 
00179      UCOL_ALTERNATE_HANDLING, 
00186      UCOL_CASE_FIRST, 
00194      UCOL_CASE_LEVEL,
00202      UCOL_NORMALIZATION_MODE, 
00204      UCOL_DECOMPOSITION_MODE = UCOL_NORMALIZATION_MODE,
00215      UCOL_STRENGTH,  
00221      UCOL_HIRAGANA_QUATERNARY_MODE, 
00222      UCOL_ATTRIBUTE_COUNT
00223 } UColAttribute;
00224 
00226 typedef enum {
00227   UCOL_TAILORING_ONLY, 
00228   UCOL_FULL_RULES 
00229 }  UColRuleOption ;
00230 
00246 U_CAPI UCollator* U_EXPORT2 
00247 ucol_open(const char *loc, UErrorCode *status);
00248 
00274 U_CAPI UCollator* U_EXPORT2 
00275 ucol_openRules( const UChar        *rules,
00276                 int32_t            rulesLength,
00277                 UColAttributeValue normalizationMode,
00278                 UCollationStrength strength,
00279                 UParseError        *parseError,
00280                 UErrorCode         *status);
00281 
00292 U_CAPI void U_EXPORT2 
00293 ucol_close(UCollator *coll);
00294 
00310 U_CAPI UCollationResult U_EXPORT2 
00311 ucol_strcoll(    const    UCollator    *coll,
00312         const    UChar        *source,
00313         int32_t            sourceLength,
00314         const    UChar        *target,
00315         int32_t            targetLength);
00316 
00331 U_CAPI UBool U_EXPORT2 
00332 ucol_greater(const UCollator *coll,
00333              const UChar     *source, int32_t sourceLength,
00334              const UChar     *target, int32_t targetLength);
00335 
00350 U_CAPI UBool U_EXPORT2 
00351 ucol_greaterOrEqual(const UCollator *coll,
00352                     const UChar     *source, int32_t sourceLength,
00353                     const UChar     *target, int32_t targetLength);
00354 
00369 U_CAPI UBool U_EXPORT2 
00370 ucol_equal(const UCollator *coll,
00371            const UChar     *source, int32_t sourceLength,
00372            const UChar     *target, int32_t targetLength);
00373 
00383 U_CAPI UCollationStrength U_EXPORT2 
00384 ucol_getStrength(const UCollator *coll);
00385 
00395 U_CAPI void U_EXPORT2 
00396 ucol_setStrength(UCollator *coll,
00397                  UCollationStrength strength);
00398 
00411 U_CAPI int32_t U_EXPORT2 
00412 ucol_getDisplayName(    const    char        *objLoc,
00413             const    char        *dispLoc,
00414             UChar             *result,
00415             int32_t         resultLength,
00416             UErrorCode        *status);
00417 
00427 U_CAPI const char* U_EXPORT2 
00428 ucol_getAvailable(int32_t index);
00429 
00438 U_CAPI int32_t U_EXPORT2 
00439 ucol_countAvailable(void);
00440 
00449 U_CAPI const UChar* U_EXPORT2 
00450 ucol_getRules(    const    UCollator    *coll, 
00451         int32_t            *length);
00452 
00465 U_CAPI int32_t U_EXPORT2 
00466 ucol_getSortKey(const    UCollator    *coll,
00467         const    UChar        *source,
00468         int32_t        sourceLength,
00469         uint8_t        *result,
00470         int32_t        resultLength);
00471 
00473 /* See below for explanation                */
00474 /* do not change the values assigned to the */
00475 /* members of this enum. Underlying code    */
00476 /* depends on them having these numbers     */
00477 typedef enum {
00479   UCOL_BOUND_LOWER = 0,
00481   UCOL_BOUND_UPPER = 1,
00483   UCOL_BOUND_UPPER_LONG = 2,
00484   UCOL_BOUND_VALUE_COUNT
00485 } UColBoundMode;
00486 
00524 U_CAPI int32_t U_EXPORT2 
00525 ucol_getBound(const uint8_t       *source,
00526         int32_t             sourceLength,
00527         UColBoundMode       boundType,
00528         uint32_t            noOfLevels,
00529         uint8_t             *result,
00530         int32_t             resultLength,
00531         UErrorCode          *status);
00532         
00538 U_CAPI void U_EXPORT2
00539 ucol_getVersion(const UCollator* coll, UVersionInfo info);
00540 
00541 
00562 U_CAPI int32_t U_EXPORT2 
00563 ucol_mergeSortkeys(const uint8_t *src1, int32_t src1Length,
00564                    const uint8_t *src2, int32_t src2Length,
00565                    uint8_t *dest, int32_t destCapacity);
00566 
00578 U_CAPI void U_EXPORT2 
00579 ucol_setAttribute(UCollator *coll, UColAttribute attr, UColAttributeValue value, UErrorCode *status);
00580 
00592 U_CAPI UColAttributeValue  U_EXPORT2 
00593 ucol_getAttribute(const UCollator *coll, UColAttribute attr, UErrorCode *status);
00594 
00614 U_CAPI uint32_t U_EXPORT2 
00615 ucol_setVariableTop(UCollator *coll, 
00616                     const UChar *varTop, int32_t len, 
00617                     UErrorCode *status);
00618 
00629 U_CAPI uint32_t ucol_getVariableTop(const UCollator *coll, UErrorCode *status);
00630 
00642 U_CAPI void U_EXPORT2 
00643 ucol_restoreVariableTop(UCollator *coll, const uint32_t varTop, UErrorCode *status);
00644 
00667 U_CAPI UCollator* U_EXPORT2 
00668 ucol_safeClone(const UCollator *coll,
00669                void            *stackBuffer,
00670                int32_t         *pBufferSize,
00671                UErrorCode      *status);
00672 
00674 #define U_COL_SAFECLONE_BUFFERSIZE 384
00675 
00686 U_CAPI int32_t U_EXPORT2 
00687 ucol_getRulesEx(const UCollator *coll, UColRuleOption delta, UChar *buffer, int32_t bufferLen);
00688 
00689 
00690 /********************************* Deprecated API ********************************/
00691 /* This is the C API wrapper for CollationIterator that got booted out from here, including just for */
00692 /* include backward compatibility */
00693 /* @deprecated remove after nov-2002 */
00694 #include "unicode/ucoleitr.h"
00695 
00717 U_CAPI UCollator * U_EXPORT2
00718 ucol_openVersion(const char *loc,
00719                  UVersionInfo version,
00720                  UErrorCode *status);
00721 
00730 U_CAPI UNormalizationMode U_EXPORT2 
00731 ucol_getNormalization(const UCollator* coll);
00732 
00743 U_CAPI void U_EXPORT2 
00744 ucol_setNormalization(  UCollator        *coll,
00745             UNormalizationMode    mode);
00746 
00760 U_CAPI const char * U_EXPORT2
00761 ucol_getLocale(const UCollator *coll, ULocDataLocaleType type, UErrorCode *status);
00762 
00766 #ifdef U_USE_DEPRECATED_FORMAT_API
00767 
00768 #if ((U_ICU_VERSION_MAJOR_NUM != 2) || (U_ICU_VERSION_MINOR_NUM !=1))
00769 #   error "ICU version has changed. Please redefine the macros under U_USE_DEPRECATED_FORMAT_API pre-processor definition"
00770 #else 
00771 #   define ucol_openRules_2_1(rules,rulesLength,normalizationMode,strength,status) ucol_openRules(rules,rulesLength,(UColAttributeValue)normalizationMode,strength,NULL,status)
00772 #endif
00773 
00774 #endif
00775 /********************************* End *******************************************/
00776 
00777 #endif

Generated on Mon Jul 25 21:51:37 2005 for ICU 2.1 by  doxygen 1.4.3-20050530