U_CAPI UCollationResult U_EXPORT2 ucol_strcollUTF8( const UCollator *coll, const char *source, int32_t sourceLength, const char *target, int32_t targetLength, UErrorCode *status) { U_ALIGN_CODE(16); UTRACE_ENTRY(UTRACE_UCOL_STRCOLLUTF8); if (UTRACE_LEVEL(UTRACE_VERBOSE)) { UTRACE_DATA3(UTRACE_VERBOSE, "coll=%p, source=%p, target=%p", coll, source, target); UTRACE_DATA2(UTRACE_VERBOSE, "source string = %vb ", source, sourceLength); UTRACE_DATA2(UTRACE_VERBOSE, "target string = %vb ", target, targetLength); } if (U_FAILURE(*status)) { /* do nothing */ UTRACE_EXIT_VALUE_STATUS(UCOL_EQUAL, *status); return UCOL_EQUAL; } UCollationResult returnVal = Collator::fromUCollator(coll)->internalCompareUTF8( source, sourceLength, target, targetLength, *status); UTRACE_EXIT_VALUE_STATUS(returnVal, *status); return returnVal; }
U_CAPI int32_t U_EXPORT2 ucol_getSortKey(const UCollator *coll, const UChar *source, int32_t sourceLength, uint8_t *result, int32_t resultLength) { UTRACE_ENTRY(UTRACE_UCOL_GET_SORTKEY); if (UTRACE_LEVEL(UTRACE_VERBOSE)) { UTRACE_DATA3(UTRACE_VERBOSE, "coll=%p, source string = %vh ", coll, source, ((sourceLength==-1 && source!=NULL) ? u_strlen(source) : sourceLength)); } int32_t keySize = Collator::fromUCollator(coll)-> getSortKey(source, sourceLength, result, resultLength); UTRACE_DATA2(UTRACE_VERBOSE, "Sort Key = %vb", result, keySize); UTRACE_EXIT_VALUE(keySize); return keySize; }
U_CAPI UCollationResult U_EXPORT2 ucol_strcoll( const UCollator *coll, const UChar *source, int32_t sourceLength, const UChar *target, int32_t targetLength) { UTRACE_ENTRY(UTRACE_UCOL_STRCOLL); if (UTRACE_LEVEL(UTRACE_VERBOSE)) { UTRACE_DATA3(UTRACE_VERBOSE, "coll=%p, source=%p, target=%p", coll, source, target); UTRACE_DATA2(UTRACE_VERBOSE, "source string = %vh ", source, sourceLength); UTRACE_DATA2(UTRACE_VERBOSE, "target string = %vh ", target, targetLength); } UErrorCode status = U_ZERO_ERROR; UCollationResult returnVal = Collator::fromUCollator(coll)-> compare(source, sourceLength, target, targetLength, status); UTRACE_EXIT_VALUE_STATUS(returnVal, status); return returnVal; }
U_CAPI UCollationResult U_EXPORT2 ucol_strcollIter( const UCollator *coll, UCharIterator *sIter, UCharIterator *tIter, UErrorCode *status) { if(!status || U_FAILURE(*status)) { return UCOL_EQUAL; } UTRACE_ENTRY(UTRACE_UCOL_STRCOLLITER); UTRACE_DATA3(UTRACE_VERBOSE, "coll=%p, sIter=%p, tIter=%p", coll, sIter, tIter); if(sIter == NULL || tIter == NULL || coll == NULL) { *status = U_ILLEGAL_ARGUMENT_ERROR; UTRACE_EXIT_VALUE_STATUS(UCOL_EQUAL, *status); return UCOL_EQUAL; } UCollationResult result = Collator::fromUCollator(coll)->compare(*sIter, *tIter, *status); UTRACE_EXIT_VALUE_STATUS(result, *status); return result; }