ICU 4.6 4.6
|
00001 /* 00002 ******************************************************************************* 00003 * Copyright (c) 1996-2010, 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 00013 #if !UCONFIG_NO_COLLATION 00014 00015 #include "unicode/unorm.h" 00016 #include "unicode/localpointer.h" 00017 #include "unicode/parseerr.h" 00018 #include "unicode/uloc.h" 00019 #include "unicode/uset.h" 00020 00057 struct UCollator; 00061 typedef struct UCollator UCollator; 00062 00063 00076 typedef enum { 00078 UCOL_EQUAL = 0, 00080 UCOL_GREATER = 1, 00082 UCOL_LESS = -1 00083 } UCollationResult ; 00084 00085 00092 typedef enum { 00094 UCOL_DEFAULT = -1, 00095 00097 UCOL_PRIMARY = 0, 00099 UCOL_SECONDARY = 1, 00101 UCOL_TERTIARY = 2, 00103 UCOL_DEFAULT_STRENGTH = UCOL_TERTIARY, 00104 UCOL_CE_STRENGTH_LIMIT, 00106 UCOL_QUATERNARY=3, 00108 UCOL_IDENTICAL=15, 00109 UCOL_STRENGTH_LIMIT, 00110 00114 UCOL_OFF = 16, 00118 UCOL_ON = 17, 00119 00121 UCOL_SHIFTED = 20, 00123 UCOL_NON_IGNORABLE = 21, 00124 00127 UCOL_LOWER_FIRST = 24, 00129 UCOL_UPPER_FIRST = 25, 00130 00131 UCOL_ATTRIBUTE_VALUE_COUNT 00132 00133 } UColAttributeValue; 00134 00139 typedef enum { 00140 UCOL_REORDER_CODE_SPACE = 0x1000, 00141 UCOL_REORDER_CODE_FIRST = UCOL_REORDER_CODE_SPACE, 00142 UCOL_REORDER_CODE_PUNCTUATION = 0x1001, 00143 UCOL_REORDER_CODE_SYMBOL = 0x1002, 00144 UCOL_REORDER_CODE_CURRENCY = 0x1003, 00145 UCOL_REORDER_CODE_DIGIT = 0x1004, 00146 UCOL_REORDER_CODE_LIMIT = 0x1005 00147 } UColReorderCode; 00148 00175 typedef UColAttributeValue UCollationStrength; 00176 00181 typedef enum { 00186 UCOL_FRENCH_COLLATION, 00195 UCOL_ALTERNATE_HANDLING, 00202 UCOL_CASE_FIRST, 00210 UCOL_CASE_LEVEL, 00218 UCOL_NORMALIZATION_MODE, 00220 UCOL_DECOMPOSITION_MODE = UCOL_NORMALIZATION_MODE, 00231 UCOL_STRENGTH, 00235 UCOL_HIRAGANA_QUATERNARY_MODE, 00243 UCOL_NUMERIC_COLLATION, 00244 UCOL_ATTRIBUTE_COUNT 00245 } UColAttribute; 00246 00250 typedef enum { 00252 UCOL_TAILORING_ONLY, 00254 UCOL_FULL_RULES 00255 } UColRuleOption ; 00256 00274 U_STABLE UCollator* U_EXPORT2 00275 ucol_open(const char *loc, UErrorCode *status); 00276 00302 U_STABLE UCollator* U_EXPORT2 00303 ucol_openRules( const UChar *rules, 00304 int32_t rulesLength, 00305 UColAttributeValue normalizationMode, 00306 UCollationStrength strength, 00307 UParseError *parseError, 00308 UErrorCode *status); 00309 00344 U_STABLE UCollator* U_EXPORT2 00345 ucol_openFromShortString( const char *definition, 00346 UBool forceDefaults, 00347 UParseError *parseError, 00348 UErrorCode *status); 00349 00363 U_DEPRECATED int32_t U_EXPORT2 00364 ucol_getContractions( const UCollator *coll, 00365 USet *conts, 00366 UErrorCode *status); 00367 00379 U_STABLE void U_EXPORT2 00380 ucol_getContractionsAndExpansions( const UCollator *coll, 00381 USet *contractions, USet *expansions, 00382 UBool addPrefixes, UErrorCode *status); 00383 00394 U_STABLE void U_EXPORT2 00395 ucol_close(UCollator *coll); 00396 00397 #if U_SHOW_CPLUSPLUS_API 00398 00399 U_NAMESPACE_BEGIN 00400 00410 U_DEFINE_LOCAL_OPEN_POINTER(LocalUCollatorPointer, UCollator, ucol_close); 00411 00412 U_NAMESPACE_END 00413 00414 #endif 00415 00431 U_STABLE UCollationResult U_EXPORT2 00432 ucol_strcoll( const UCollator *coll, 00433 const UChar *source, 00434 int32_t sourceLength, 00435 const UChar *target, 00436 int32_t targetLength); 00437 00452 U_STABLE UBool U_EXPORT2 00453 ucol_greater(const UCollator *coll, 00454 const UChar *source, int32_t sourceLength, 00455 const UChar *target, int32_t targetLength); 00456 00471 U_STABLE UBool U_EXPORT2 00472 ucol_greaterOrEqual(const UCollator *coll, 00473 const UChar *source, int32_t sourceLength, 00474 const UChar *target, int32_t targetLength); 00475 00490 U_STABLE UBool U_EXPORT2 00491 ucol_equal(const UCollator *coll, 00492 const UChar *source, int32_t sourceLength, 00493 const UChar *target, int32_t targetLength); 00494 00507 U_STABLE UCollationResult U_EXPORT2 00508 ucol_strcollIter( const UCollator *coll, 00509 UCharIterator *sIter, 00510 UCharIterator *tIter, 00511 UErrorCode *status); 00512 00522 U_STABLE UCollationStrength U_EXPORT2 00523 ucol_getStrength(const UCollator *coll); 00524 00534 U_STABLE void U_EXPORT2 00535 ucol_setStrength(UCollator *coll, 00536 UCollationStrength strength); 00537 00548 U_INTERNAL int32_t U_EXPORT2 00549 ucol_getReorderCodes(const UCollator* coll, 00550 int32_t* dest, 00551 int32_t destCapacity, 00552 UErrorCode *pErrorCode); 00553 00563 U_INTERNAL void U_EXPORT2 00564 ucol_setReorderCodes(UCollator* coll, 00565 const int32_t* reorderCodes, 00566 int32_t reorderCodesLength, 00567 UErrorCode *pErrorCode); 00568 00581 U_STABLE int32_t U_EXPORT2 00582 ucol_getDisplayName( const char *objLoc, 00583 const char *dispLoc, 00584 UChar *result, 00585 int32_t resultLength, 00586 UErrorCode *status); 00587 00597 U_STABLE const char* U_EXPORT2 00598 ucol_getAvailable(int32_t localeIndex); 00599 00608 U_STABLE int32_t U_EXPORT2 00609 ucol_countAvailable(void); 00610 00611 #if !UCONFIG_NO_SERVICE 00612 00620 U_STABLE UEnumeration* U_EXPORT2 00621 ucol_openAvailableLocales(UErrorCode *status); 00622 #endif 00623 00633 U_STABLE UEnumeration* U_EXPORT2 00634 ucol_getKeywords(UErrorCode *status); 00635 00647 U_STABLE UEnumeration* U_EXPORT2 00648 ucol_getKeywordValues(const char *keyword, UErrorCode *status); 00649 00666 U_STABLE UEnumeration* U_EXPORT2 00667 ucol_getKeywordValuesForLocale(const char* key, 00668 const char* locale, 00669 UBool commonlyUsed, 00670 UErrorCode* status); 00671 00702 U_STABLE int32_t U_EXPORT2 00703 ucol_getFunctionalEquivalent(char* result, int32_t resultCapacity, 00704 const char* keyword, const char* locale, 00705 UBool* isAvailable, UErrorCode* status); 00706 00715 U_STABLE const UChar* U_EXPORT2 00716 ucol_getRules( const UCollator *coll, 00717 int32_t *length); 00718 00739 U_STABLE int32_t U_EXPORT2 00740 ucol_getShortDefinitionString(const UCollator *coll, 00741 const char *locale, 00742 char *buffer, 00743 int32_t capacity, 00744 UErrorCode *status); 00745 00766 U_STABLE int32_t U_EXPORT2 00767 ucol_normalizeShortDefinitionString(const char *source, 00768 char *destination, 00769 int32_t capacity, 00770 UParseError *parseError, 00771 UErrorCode *status); 00772 00773 00793 U_STABLE int32_t U_EXPORT2 00794 ucol_getSortKey(const UCollator *coll, 00795 const UChar *source, 00796 int32_t sourceLength, 00797 uint8_t *result, 00798 int32_t resultLength); 00799 00800 00821 U_STABLE int32_t U_EXPORT2 00822 ucol_nextSortKeyPart(const UCollator *coll, 00823 UCharIterator *iter, 00824 uint32_t state[2], 00825 uint8_t *dest, int32_t count, 00826 UErrorCode *status); 00827 00835 typedef enum { 00837 UCOL_BOUND_LOWER = 0, 00839 UCOL_BOUND_UPPER = 1, 00841 UCOL_BOUND_UPPER_LONG = 2, 00842 UCOL_BOUND_VALUE_COUNT 00843 } UColBoundMode; 00844 00882 U_STABLE int32_t U_EXPORT2 00883 ucol_getBound(const uint8_t *source, 00884 int32_t sourceLength, 00885 UColBoundMode boundType, 00886 uint32_t noOfLevels, 00887 uint8_t *result, 00888 int32_t resultLength, 00889 UErrorCode *status); 00890 00899 U_STABLE void U_EXPORT2 00900 ucol_getVersion(const UCollator* coll, UVersionInfo info); 00901 00909 U_STABLE void U_EXPORT2 00910 ucol_getUCAVersion(const UCollator* coll, UVersionInfo info); 00911 00934 U_STABLE int32_t U_EXPORT2 00935 ucol_mergeSortkeys(const uint8_t *src1, int32_t src1Length, 00936 const uint8_t *src2, int32_t src2Length, 00937 uint8_t *dest, int32_t destCapacity); 00938 00950 U_STABLE void U_EXPORT2 00951 ucol_setAttribute(UCollator *coll, UColAttribute attr, UColAttributeValue value, UErrorCode *status); 00952 00964 U_STABLE UColAttributeValue U_EXPORT2 00965 ucol_getAttribute(const UCollator *coll, UColAttribute attr, UErrorCode *status); 00966 00986 U_STABLE uint32_t U_EXPORT2 00987 ucol_setVariableTop(UCollator *coll, 00988 const UChar *varTop, int32_t len, 00989 UErrorCode *status); 00990 01002 U_STABLE uint32_t U_EXPORT2 ucol_getVariableTop(const UCollator *coll, UErrorCode *status); 01003 01015 U_STABLE void U_EXPORT2 01016 ucol_restoreVariableTop(UCollator *coll, const uint32_t varTop, UErrorCode *status); 01017 01040 U_STABLE UCollator* U_EXPORT2 01041 ucol_safeClone(const UCollator *coll, 01042 void *stackBuffer, 01043 int32_t *pBufferSize, 01044 UErrorCode *status); 01045 01049 #define U_COL_SAFECLONE_BUFFERSIZE 512 01050 01062 U_STABLE int32_t U_EXPORT2 01063 ucol_getRulesEx(const UCollator *coll, UColRuleOption delta, UChar *buffer, int32_t bufferLen); 01064 01079 U_DEPRECATED const char * U_EXPORT2 01080 ucol_getLocale(const UCollator *coll, ULocDataLocaleType type, UErrorCode *status); 01081 01082 01097 U_STABLE const char * U_EXPORT2 01098 ucol_getLocaleByType(const UCollator *coll, ULocDataLocaleType type, UErrorCode *status); 01099 01110 U_STABLE USet * U_EXPORT2 01111 ucol_getTailoredSet(const UCollator *coll, UErrorCode *status); 01112 01124 U_INTERNAL UColAttributeValue U_EXPORT2 01125 ucol_getAttributeOrDefault(const UCollator *coll, UColAttribute attr, UErrorCode *status); 01126 01135 U_INTERNAL UBool U_EXPORT2 01136 ucol_equals(const UCollator *source, const UCollator *target); 01137 01149 U_INTERNAL int32_t U_EXPORT2 01150 ucol_getUnsafeSet( const UCollator *coll, 01151 USet *unsafe, 01152 UErrorCode *status); 01153 01157 U_INTERNAL void U_EXPORT2 01158 ucol_forgetUCA(void); 01159 01180 U_INTERNAL void U_EXPORT2 01181 ucol_prepareShortStringOpen( const char *definition, 01182 UBool forceDefaults, 01183 UParseError *parseError, 01184 UErrorCode *status); 01185 01197 U_STABLE int32_t U_EXPORT2 01198 ucol_cloneBinary(const UCollator *coll, 01199 uint8_t *buffer, int32_t capacity, 01200 UErrorCode *status); 01201 01219 U_STABLE UCollator* U_EXPORT2 01220 ucol_openBinary(const uint8_t *bin, int32_t length, 01221 const UCollator *base, 01222 UErrorCode *status); 01223 01224 01225 #endif /* #if !UCONFIG_NO_COLLATION */ 01226 01227 #endif