//
//  FinderCompare.m
//  Created by Pablo Gomez Basanta on 23/7/05.
//  From: http://neop.gbtopia.com/?p=27
//
//  Based on:
//  http://developer.apple.com/qa/qa2004/qa1159.html
//

#import "NSString+FinderCompare.h"

@implementation NSString (FinderCompare)

- (NSComparisonResult)finderCompare:(NSString *)aString {
	SInt32 compareResult;

	CFIndex lhsLen = [self length];
	;
	CFIndex rhsLen = [aString length];

	UniChar *lhsBuf = malloc(lhsLen * sizeof(UniChar));
	UniChar *rhsBuf = malloc(rhsLen * sizeof(UniChar));

	[self getCharacters:lhsBuf];
	[aString getCharacters:rhsBuf];

	(void)UCCompareTextDefault(kUCCollateComposeInsensitiveMask | kUCCollateWidthInsensitiveMask | kUCCollateCaseInsensitiveMask | kUCCollateDigitsOverrideMask | kUCCollateDigitsAsNumberMask | kUCCollatePunctuationSignificantMask, lhsBuf, lhsLen, rhsBuf, rhsLen, NULL, &compareResult);

	free(lhsBuf);
	free(rhsBuf);

	return (NSComparisonResult)compareResult;
}

@end

@implementation NSURL (FinderCompare)

- (NSComparisonResult)finderCompare:(NSURL *)aURL {
	return [[self absoluteString] finderCompare:[aURL absoluteString]];
}

@end
