コード例 #1
0
CFComparisonResult
CFStringCompareWithOptions (CFStringRef str1, CFStringRef str2,
  CFRange rangeToCompare, CFStringCompareFlags compareOptions)
{
  return CFStringCompareWithOptionsAndLocale (str1, str2, rangeToCompare,
                                              compareOptions, NULL);
}
コード例 #2
0
ファイル: CollatorICU.cpp プロジェクト: BlainHamon/tijscore
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
}
コード例 #3
0
CFComparisonResult
CFStringCompare (CFStringRef str1, CFStringRef str2,
                 CFStringCompareFlags compareOptions)
{
  CFIndex len = CFStringGetLength (str1);
  return CFStringCompareWithOptionsAndLocale (str1, str2, CFRangeMake(0, len),
                                              compareOptions, NULL);
}
コード例 #4
0
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;
}