CFComparisonResult CFStringCompareWithOptions (CFStringRef str1, CFStringRef str2, CFRange rangeToCompare, CFStringCompareFlags compareOptions) { return CFStringCompareWithOptionsAndLocale (str1, str2, rangeToCompare, compareOptions, NULL); }
Collator::Result Collator::collate(const UChar* lhs, size_t lhsLength, const UChar* rhs, size_t rhsLength) const { #ifndef USE_TI_UCOL_REPLACEMENTS if (!m_collator) createCollator(); return static_cast<Result>(ucol_strcoll(m_collator, lhs, lhsLength, rhs, rhsLength)); #else RetainPtr<CFStringRef> localeStr = CFStringCreateWithCString(NULL, m_locale, kCFStringEncodingASCII); RetainPtr<CFLocaleRef> locale = CFLocaleCreate(NULL, localeStr.get()); if (!locale) { locale = CFLocaleCopyCurrent(); } // We assume that lhsLength/rhsLength != -1, which is reasonable based on the source. RetainPtr<CFStringRef> lhsRef = CFStringCreateWithCharacters(NULL, (const UniChar*)lhs, lhsLength); RetainPtr<CFStringRef> rhsRef = CFStringCreateWithCharacters(NULL, (const UniChar*)rhs, rhsLength); return static_cast<Result>(CFStringCompareWithOptionsAndLocale(lhsRef.get(), rhsRef.get(), CFRangeMake(0, CFStringGetLength(lhsRef.get())), kCFCompareLocalized, locale.get())); #endif }
CFComparisonResult CFStringCompare (CFStringRef str1, CFStringRef str2, CFStringCompareFlags compareOptions) { CFIndex len = CFStringGetLength (str1); return CFStringCompareWithOptionsAndLocale (str1, str2, CFRangeMake(0, len), compareOptions, NULL); }
CFComparisonResult XMacStringCompare::_CompareCFString( const UniChar *inText1, sLONG inSize1, const UniChar *inText2, sLONG inSize2, bool inWithDiacritics) { CFStringRef string1 = ::CFStringCreateWithCharactersNoCopy( kCFAllocatorDefault, inText1, inSize1, kCFAllocatorNull); CFStringRef string2 = ::CFStringCreateWithCharactersNoCopy( kCFAllocatorDefault, inText2, inSize2, kCFAllocatorNull); CFComparisonResult result = kCFCompareEqualTo; if ( (string1 != NULL) && (string2 != NULL) ) { CFStringCompareFlags flags = kCFCompareWidthInsensitive | kCFCompareLocalized; if (!inWithDiacritics) flags |= (kCFCompareDiacriticInsensitive | kCFCompareCaseInsensitive); result = CFStringCompareWithOptionsAndLocale( string1, string2, CFRangeMake( 0, CFStringGetLength( string1)), flags, GetCFLocale()); } if (string1 != NULL) CFRelease( string1); if (string2 != NULL) CFRelease( string2); return result; }