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 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; }
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 int32_t U_EXPORT2 ucol_nextSortKeyPart(const UCollator *coll, UCharIterator *iter, uint32_t state[2], uint8_t *dest, int32_t count, UErrorCode *status) { /* error checking */ if(status==NULL || U_FAILURE(*status)) { return 0; } UTRACE_ENTRY(UTRACE_UCOL_NEXTSORTKEYPART); UTRACE_DATA6(UTRACE_VERBOSE, "coll=%p, iter=%p, state=%d %d, dest=%p, count=%d", coll, iter, state[0], state[1], dest, count); int32_t i = Collator::fromUCollator(coll)-> internalNextSortKeyPart(iter, state, dest, count, *status); // Return number of meaningful sortkey bytes. UTRACE_DATA4(UTRACE_VERBOSE, "dest = %vb, state=%d %d", dest,i, state[0], state[1]); UTRACE_EXIT_VALUE_STATUS(i, *status); return i; }