Changeset 2
- Timestamp:
- 12/ 7/06 10:45:42 PM (2 years ago)
- Files:
-
- trunk/CocoaICU.xcodeproj/project.pbxproj (modified) (16 diffs)
- trunk/ICUMatcher.h (added)
- trunk/ICUMatcher.m (added)
- trunk/source/CocoaICU.m (modified) (5 diffs)
- trunk/source/ICUPattern.h (modified) (2 diffs)
- trunk/source/ICUPattern.m (modified) (4 diffs)
- trunk/source/ICUTest.m (modified) (2 diffs)
- trunk/source/NSStringICUAdditions.h (modified) (1 diff)
- trunk/source/NSStringICUAdditions.m (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/CocoaICU.xcodeproj/project.pbxproj
r1 r2 8 8 9 9 /* Begin PBXBuildFile section */ 10 8DD76F9C0486AA7600D96B5E /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 08FB779EFE84155DC02AAC07 /* Foundation.framework */; }; 11 9389EF6C0B10EDAA000ECD6C /* libicucore.A.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 9389EF6B0B10EDAA000ECD6C /* libicucore.A.dylib */; }; 10 939322590B1E6AD000DD0AF0 /* ICUMatcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 939322580B1E6AD000DD0AF0 /* ICUMatcher.m */; }; 12 11 93E2C0720B18BF5E001193AC /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 08FB779EFE84155DC02AAC07 /* Foundation.framework */; }; 13 12 93E2C0730B18BF5E001193AC /* libicucore.A.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 9389EF6B0B10EDAA000ECD6C /* libicucore.A.dylib */; }; 14 93E2C0D50B18D142001193AC /* CocoaICU.m in Sources */ = {isa = PBXBuildFile; fileRef = 93E2C0CE0B18D142001193AC /* CocoaICU.m */; }; 15 93E2C0D60B18D142001193AC /* ICUPattern.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 93E2C0CF0B18D142001193AC /* ICUPattern.h */; }; 16 93E2C0D70B18D142001193AC /* ICUPattern.m in Sources */ = {isa = PBXBuildFile; fileRef = 93E2C0D00B18D142001193AC /* ICUPattern.m */; }; 17 93E2C0D80B18D142001193AC /* ICUTest.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 93E2C0D10B18D142001193AC /* ICUTest.h */; }; 18 93E2C0DA0B18D142001193AC /* NSStringICUAdditions.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 93E2C0D30B18D142001193AC /* NSStringICUAdditions.h */; }; 19 93E2C0DB0B18D142001193AC /* NSStringICUAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 93E2C0D40B18D142001193AC /* NSStringICUAdditions.m */; }; 13 93E2C5070B1A5465001193AC /* ICUTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 93E2C0D20B18D142001193AC /* ICUTest.m */; }; 14 93E2C5080B1A5465001193AC /* ICUPattern.m in Sources */ = {isa = PBXBuildFile; fileRef = 93E2C0D00B18D142001193AC /* ICUPattern.m */; }; 15 93E2C5090B1A5465001193AC /* NSStringICUAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 93E2C0D40B18D142001193AC /* NSStringICUAdditions.m */; }; 16 93E2C50F0B1A5495001193AC /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 08FB779EFE84155DC02AAC07 /* Foundation.framework */; }; 17 93E2C5100B1A5495001193AC /* ICUPattern.m in Sources */ = {isa = PBXBuildFile; fileRef = 93E2C0D00B18D142001193AC /* ICUPattern.m */; }; 18 93E2C5120B1A5495001193AC /* libicucore.A.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 9389EF6B0B10EDAA000ECD6C /* libicucore.A.dylib */; }; 19 93E2C5130B1A5495001193AC /* NSStringICUAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 93E2C0D40B18D142001193AC /* NSStringICUAdditions.m */; }; 20 93E2C5320B1A59FC001193AC /* CocoaICU.m in Sources */ = {isa = PBXBuildFile; fileRef = 93E2C0CE0B18D142001193AC /* CocoaICU.m */; }; 20 21 /* End PBXBuildFile section */ 21 22 22 /* Begin PBXCopyFilesBuildPhase section */ 23 8DD76F9E0486AA7600D96B5E /* CopyFiles */ = { 24 isa = PBXCopyFilesBuildPhase; 25 buildActionMask = 8; 26 dstPath = /usr/share/man/man1/; 27 dstSubfolderSpec = 0; 28 files = ( 29 93E2C0D60B18D142001193AC /* ICUPattern.h in CopyFiles */, 30 93E2C0D80B18D142001193AC /* ICUTest.h in CopyFiles */, 31 93E2C0DA0B18D142001193AC /* NSStringICUAdditions.h in CopyFiles */, 32 ); 33 runOnlyForDeploymentPostprocessing = 1; 34 }; 35 /* End PBXCopyFilesBuildPhase section */ 23 /* Begin PBXContainerItemProxy section */ 24 93E2C57C0B1A6A77001193AC /* PBXContainerItemProxy */ = { 25 isa = PBXContainerItemProxy; 26 containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; 27 proxyType = 1; 28 remoteGlobalIDString = 93E2BFE40B18BEC4001193AC; 29 remoteInfo = "CocoaICU Unit Tests"; 30 }; 31 /* End PBXContainerItemProxy section */ 36 32 37 33 /* Begin PBXFileReference section */ 38 34 08FB779EFE84155DC02AAC07 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = "<absolute>"; }; 39 35 32A70AAB03705E1F00C91783 /* CocoaICU_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CocoaICU_Prefix.pch; sourceTree = "<group>"; }; 40 8DD76FA10486AA7600D96B5E /* CocoaICU */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = CocoaICU; sourceTree = BUILT_PRODUCTS_DIR; };41 36 9389EF6B0B10EDAA000ECD6C /* libicucore.A.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libicucore.A.dylib; path = /usr/lib/libicucore.A.dylib; sourceTree = "<absolute>"; }; 37 939322570B1E6AD000DD0AF0 /* ICUMatcher.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ICUMatcher.h; sourceTree = "<group>"; }; 38 939322580B1E6AD000DD0AF0 /* ICUMatcher.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ICUMatcher.m; sourceTree = "<group>"; }; 42 39 93E2BFE50B18BEC4001193AC /* CocoaICU Unit Tests.octest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "CocoaICU Unit Tests.octest"; sourceTree = BUILT_PRODUCTS_DIR; }; 43 93E2BFE60B18BEC4001193AC /* CocoaICU Unit Tests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "CocoaICU Unit Tests-Info.plist"; sourceTree = "<group>"; };40 93E2BFE60B18BEC4001193AC /* CocoaICU Unit Tests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.xml; name = "CocoaICU Unit Tests-Info.plist"; path = "resources/CocoaICU Unit Tests-Info.plist"; sourceTree = SOURCE_ROOT; }; 44 41 93E2C0CE0B18D142001193AC /* CocoaICU.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CocoaICU.m; path = source/CocoaICU.m; sourceTree = "<group>"; }; 45 42 93E2C0CF0B18D142001193AC /* ICUPattern.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ICUPattern.h; path = source/ICUPattern.h; sourceTree = "<group>"; }; … … 49 46 93E2C0D30B18D142001193AC /* NSStringICUAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NSStringICUAdditions.h; path = source/NSStringICUAdditions.h; sourceTree = "<group>"; }; 50 47 93E2C0D40B18D142001193AC /* NSStringICUAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = NSStringICUAdditions.m; path = source/NSStringICUAdditions.m; sourceTree = "<group>"; }; 48 93E2C4F00B1A53F0001193AC /* CocoaICU */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = CocoaICU; sourceTree = BUILT_PRODUCTS_DIR; }; 51 49 /* End PBXFileReference section */ 52 50 53 51 /* Begin PBXFrameworksBuildPhase section */ 54 8DD76F9B0486AA7600D96B5E /* Frameworks */ = {55 isa = PBXFrameworksBuildPhase;56 buildActionMask = 2147483647;57 files = (58 8DD76F9C0486AA7600D96B5E /* Foundation.framework in Frameworks */,59 9389EF6C0B10EDAA000ECD6C /* libicucore.A.dylib in Frameworks */,60 );61 runOnlyForDeploymentPostprocessing = 0;62 };63 52 93E2BFE20B18BEC4001193AC /* Frameworks */ = { 64 53 isa = PBXFrameworksBuildPhase; … … 70 59 runOnlyForDeploymentPostprocessing = 0; 71 60 }; 61 93E2C4EE0B1A53F0001193AC /* Frameworks */ = { 62 isa = PBXFrameworksBuildPhase; 63 buildActionMask = 2147483647; 64 files = ( 65 93E2C5120B1A5495001193AC /* libicucore.A.dylib in Frameworks */, 66 93E2C50F0B1A5495001193AC /* Foundation.framework in Frameworks */, 67 ); 68 runOnlyForDeploymentPostprocessing = 0; 69 }; 72 70 /* End PBXFrameworksBuildPhase section */ 73 71 … … 77 75 children = ( 78 76 93E2C0DE0B18D17D001193AC /* Other */, 79 93E2C0DD0B18D16F001193AC /* Test */,77 93E2C0DD0B18D16F001193AC /* Test Cases */, 80 78 08FB7795FE84155DC02AAC07 /* Source */, 81 79 08FB779DFE84155DC02AAC07 /* External Frameworks and Libraries */, … … 91 89 93E2C0CF0B18D142001193AC /* ICUPattern.h */, 92 90 93E2C0D00B18D142001193AC /* ICUPattern.m */, 91 939322570B1E6AD000DD0AF0 /* ICUMatcher.h */, 92 939322580B1E6AD000DD0AF0 /* ICUMatcher.m */, 93 93 93E2C0D30B18D142001193AC /* NSStringICUAdditions.h */, 94 94 93E2C0D40B18D142001193AC /* NSStringICUAdditions.m */, … … 109 109 isa = PBXGroup; 110 110 children = ( 111 8DD76FA10486AA7600D96B5E /* CocoaICU */,112 111 93E2BFE50B18BEC4001193AC /* CocoaICU Unit Tests.octest */, 112 93E2C4F00B1A53F0001193AC /* CocoaICU */, 113 113 ); 114 114 name = Products; 115 115 sourceTree = "<group>"; 116 116 }; 117 93E2C0DD0B18D16F001193AC /* Test */ = {117 93E2C0DD0B18D16F001193AC /* Test Cases */ = { 118 118 isa = PBXGroup; 119 119 children = ( … … 121 121 93E2C0D20B18D142001193AC /* ICUTest.m */, 122 122 ); 123 name = Test;123 name = "Test Cases"; 124 124 sourceTree = "<group>"; 125 125 }; … … 136 136 137 137 /* Begin PBXNativeTarget section */ 138 8DD76F960486AA7600D96B5E /* CocoaICU */ = {139 isa = PBXNativeTarget;140 buildConfigurationList = 1DEB927408733DD40010E9CD /* Build configuration list for PBXNativeTarget "CocoaICU" */;141 buildPhases = (142 8DD76F990486AA7600D96B5E /* Sources */,143 8DD76F9B0486AA7600D96B5E /* Frameworks */,144 8DD76F9E0486AA7600D96B5E /* CopyFiles */,145 );146 buildRules = (147 );148 dependencies = (149 );150 name = CocoaICU;151 productInstallPath = "$(HOME)/bin";152 productName = CocoaICU;153 productReference = 8DD76FA10486AA7600D96B5E /* CocoaICU */;154 productType = "com.apple.product-type.tool";155 };156 138 93E2BFE40B18BEC4001193AC /* CocoaICU Unit Tests */ = { 157 139 isa = PBXNativeTarget; … … 172 154 productType = "com.apple.product-type.bundle"; 173 155 }; 156 93E2C4EF0B1A53F0001193AC /* CocoaICU */ = { 157 isa = PBXNativeTarget; 158 buildConfigurationList = 93E2C5010B1A5403001193AC /* Build configuration list for PBXNativeTarget "CocoaICU" */; 159 buildPhases = ( 160 93E2C4ED0B1A53F0001193AC /* Sources */, 161 93E2C4EE0B1A53F0001193AC /* Frameworks */, 162 ); 163 buildRules = ( 164 ); 165 dependencies = ( 166 93E2C57D0B1A6A77001193AC /* PBXTargetDependency */, 167 ); 168 name = CocoaICU; 169 productName = CocoaICU; 170 productReference = 93E2C4F00B1A53F0001193AC /* CocoaICU */; 171 productType = "com.apple.product-type.tool"; 172 }; 174 173 /* End PBXNativeTarget section */ 175 174 … … 182 181 projectDirPath = ""; 183 182 targets = ( 184 8DD76F960486AA7600D96B5E /* CocoaICU */,185 183 93E2BFE40B18BEC4001193AC /* CocoaICU Unit Tests */, 184 93E2C4EF0B1A53F0001193AC /* CocoaICU */, 186 185 ); 187 186 }; … … 215 214 216 215 /* Begin PBXSourcesBuildPhase section */ 217 8DD76F990486AA7600D96B5E /* Sources */ = {218 isa = PBXSourcesBuildPhase;219 buildActionMask = 2147483647;220 files = (221 93E2C0D50B18D142001193AC /* CocoaICU.m in Sources */,222 93E2C0D70B18D142001193AC /* ICUPattern.m in Sources */,223 93E2C0DB0B18D142001193AC /* NSStringICUAdditions.m in Sources */,224 );225 runOnlyForDeploymentPostprocessing = 0;226 };227 216 93E2BFE10B18BEC4001193AC /* Sources */ = { 228 217 isa = PBXSourcesBuildPhase; 229 218 buildActionMask = 2147483647; 230 219 files = ( 220 93E2C5070B1A5465001193AC /* ICUTest.m in Sources */, 221 93E2C5080B1A5465001193AC /* ICUPattern.m in Sources */, 222 93E2C5090B1A5465001193AC /* NSStringICUAdditions.m in Sources */, 223 ); 224 runOnlyForDeploymentPostprocessing = 0; 225 }; 226 93E2C4ED0B1A53F0001193AC /* Sources */ = { 227 isa = PBXSourcesBuildPhase; 228 buildActionMask = 2147483647; 229 files = ( 230 93E2C5320B1A59FC001193AC /* CocoaICU.m in Sources */, 231 93E2C5100B1A5495001193AC /* ICUPattern.m in Sources */, 232 93E2C5130B1A5495001193AC /* NSStringICUAdditions.m in Sources */, 233 939322590B1E6AD000DD0AF0 /* ICUMatcher.m in Sources */, 231 234 ); 232 235 runOnlyForDeploymentPostprocessing = 0; … … 234 237 /* End PBXSourcesBuildPhase section */ 235 238 239 /* Begin PBXTargetDependency section */ 240 93E2C57D0B1A6A77001193AC /* PBXTargetDependency */ = { 241 isa = PBXTargetDependency; 242 target = 93E2BFE40B18BEC4001193AC /* CocoaICU Unit Tests */; 243 targetProxy = 93E2C57C0B1A6A77001193AC /* PBXContainerItemProxy */; 244 }; 245 /* End PBXTargetDependency section */ 246 236 247 /* Begin XCBuildConfiguration section */ 237 1DEB927508733DD40010E9CD /* Debug */ = {238 isa = XCBuildConfiguration;239 buildSettings = {240 COPY_PHASE_STRIP = NO;241 GCC_DYNAMIC_NO_PIC = NO;242 GCC_ENABLE_FIX_AND_CONTINUE = YES;243 GCC_MODEL_TUNING = G5;244 GCC_OPTIMIZATION_LEVEL = 0;245 GCC_PRECOMPILE_PREFIX_HEADER = YES;246 GCC_PREFIX_HEADER = CocoaICU_Prefix.pch;247 INSTALL_PATH = "$(HOME)/bin";248 PRODUCT_NAME = CocoaICU;249 ZERO_LINK = YES;250 };251 name = Debug;252 };253 1DEB927608733DD40010E9CD /* Release */ = {254 isa = XCBuildConfiguration;255 buildSettings = {256 ARCHS = (257 ppc,258 i386,259 );260 GCC_GENERATE_DEBUGGING_SYMBOLS = NO;261 GCC_MODEL_TUNING = G5;262 GCC_PRECOMPILE_PREFIX_HEADER = YES;263 GCC_PREFIX_HEADER = CocoaICU_Prefix.pch;264 INSTALL_PATH = "$(HOME)/bin";265 PRODUCT_NAME = CocoaICU;266 };267 name = Release;268 };269 248 1DEB927908733DD40010E9CD /* Debug */ = { 270 249 isa = XCBuildConfiguration; … … 303 282 GCC_PRECOMPILE_PREFIX_HEADER = YES; 304 283 GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/Cocoa.framework/Headers/Cocoa.h"; 305 INFOPLIST_FILE = " CocoaICU Unit Tests-Info.plist";284 INFOPLIST_FILE = "resources/CocoaICU Unit Tests-Info.plist"; 306 285 INSTALL_PATH = "$(USER_LIBRARY_DIR)/Bundles"; 307 286 OTHER_LDFLAGS = ( … … 328 307 GCC_PRECOMPILE_PREFIX_HEADER = YES; 329 308 GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/Cocoa.framework/Headers/Cocoa.h"; 330 INFOPLIST_FILE = " CocoaICU Unit Tests-Info.plist";309 INFOPLIST_FILE = "resources/CocoaICU Unit Tests-Info.plist"; 331 310 INSTALL_PATH = "$(USER_LIBRARY_DIR)/Bundles"; 332 311 OTHER_LDFLAGS = ( … … 343 322 name = Release; 344 323 }; 324 93E2C5020B1A5403001193AC /* Debug */ = { 325 isa = XCBuildConfiguration; 326 buildSettings = { 327 COPY_PHASE_STRIP = NO; 328 GCC_DYNAMIC_NO_PIC = NO; 329 GCC_ENABLE_FIX_AND_CONTINUE = YES; 330 GCC_GENERATE_DEBUGGING_SYMBOLS = YES; 331 GCC_MODEL_TUNING = G5; 332 GCC_OPTIMIZATION_LEVEL = 0; 333 INSTALL_PATH = "$(HOME)/bin"; 334 PREBINDING = NO; 335 PRODUCT_NAME = CocoaICU; 336 ZERO_LINK = YES; 337 }; 338 name = Debug; 339 }; 340 93E2C5030B1A5403001193AC /* Release */ = { 341 isa = XCBuildConfiguration; 342 buildSettings = { 343 COPY_PHASE_STRIP = YES; 344 GCC_ENABLE_FIX_AND_CONTINUE = NO; 345 GCC_GENERATE_DEBUGGING_SYMBOLS = NO; 346 GCC_MODEL_TUNING = G5; 347 INSTALL_PATH = "$(HOME)/bin"; 348 PREBINDING = NO; 349 PRODUCT_NAME = CocoaICU; 350 ZERO_LINK = NO; 351 }; 352 name = Release; 353 }; 345 354 /* End XCBuildConfiguration section */ 346 355 347 356 /* Begin XCConfigurationList section */ 348 1DEB927408733DD40010E9CD /* Build configuration list for PBXNativeTarget "CocoaICU" */ = {349 isa = XCConfigurationList;350 buildConfigurations = (351 1DEB927508733DD40010E9CD /* Debug */,352 1DEB927608733DD40010E9CD /* Release */,353 );354 defaultConfigurationIsVisible = 0;355 defaultConfigurationName = Release;356 };357 357 1DEB927808733DD40010E9CD /* Build configuration list for PBXProject "CocoaICU" */ = { 358 358 isa = XCConfigurationList; … … 373 373 defaultConfigurationName = Release; 374 374 }; 375 93E2C5010B1A5403001193AC /* Build configuration list for PBXNativeTarget "CocoaICU" */ = { 376 isa = XCConfigurationList; 377 buildConfigurations = ( 378 93E2C5020B1A5403001193AC /* Debug */, 379 93E2C5030B1A5403001193AC /* Release */, 380 ); 381 defaultConfigurationIsVisible = 0; 382 defaultConfigurationName = Release; 383 }; 375 384 /* End XCConfigurationList section */ 376 385 }; trunk/source/CocoaICU.m
r1 r2 2 2 #import "ICUPattern.h" 3 3 #import "NSStringICUAdditions.h" 4 4 5 5 6 void doSpeedComparison(); … … 11 12 NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; 12 13 13 // doSpeedComparison(); 14 // doSplitTest(); 15 // doSpeedComparison(); 16 // doUnicodeCharSearch(); 14 NSString *searchString = @"bbdfdbbababababaklsdjfababababab"; 15 NSString *patternString = @"([ab]+)"; 16 NSArray *results = [searchString findPatternString:patternString]; 17 18 NSLog(@"%@", results); 17 19 18 20 [pool release]; … … 39 41 40 42 void doSpeedComparison() { 41 NSString *pathToSomeFile = [@"~/Sandbox/CocoaICU/ resources/tmp.mbox" stringByExpandingTildeInPath];43 NSString *pathToSomeFile = [@"~/Sandbox/CocoaICU/trunk/resources/cocoa.mbox" stringByExpandingTildeInPath]; 42 44 NSData *stringData = [NSData dataWithContentsOfMappedFile:pathToSomeFile]; 43 45 NSString *fileContents = [[NSString alloc] initWithData:stringData encoding:NSASCIIStringEncoding]; … … 48 50 49 51 // /* do foundation find and replace */ 52 NSAutoreleasePool *innerPool = [[NSAutoreleasePool alloc] init]; 50 53 NSCalendarDate *preCocoaFindAndReplaceTime = [NSCalendarDate date]; 51 54 NSMutableString *stringToSearch = [NSMutableString stringWithString:fileContents]; 52 55 [stringToSearch replaceOccurrencesOfString:searchTerm withString:replacementTerm options:0 range:NSMakeRange(0, [stringToSearch length])]; 53 NSString *resultingStringUsingFoundation = [ NSString stringWithString:stringToSearch];56 NSString *resultingStringUsingFoundation = [[NSString stringWithString:stringToSearch] retain]; 54 57 NSLog(@"Foundation find/replace took %.3f seconds", [[NSDate date] timeIntervalSinceDate:preCocoaFindAndReplaceTime]); 58 [innerPool release]; 55 59 60 innerPool = [[NSAutoreleasePool alloc] init]; 56 61 /* do icu find and replace */ 57 62 NSCalendarDate *preICUFindAndReplaceTime = [NSCalendarDate date]; … … 60 65 NSLog(@"done"); 61 66 62 //if([resultingStringUsingFoundation isEqualToString:resultingStringUsingIcu]) {63 //NSLog(@"replacement resulted in the same string");64 //} else65 //NSLog(@"replacement resulted in a different string");67 if([resultingStringUsingFoundation isEqualToString:resultingStringUsingIcu]) { 68 NSLog(@"replacement resulted in the same string"); 69 } else 70 NSLog(@"replacement resulted in a different string"); 66 71 67 72 [innerPool release]; 68 73 } trunk/source/ICUPattern.h
r1 r2 9 9 #import <Cocoa/Cocoa.h> 10 10 11 @class ICUMatcher; 12 11 13 /** 12 * flags. ..14 * flags. see http://icu.sourceforge.net/apiref/icu4c/uregex_8h.html#874989dfec4cbeb6baf4d1a51cb529ae 13 15 */ 14 16 extern unsigned CaseInsensitiveMatching; … … 24 26 } 25 27 28 // XOR flags (defaults to 0 when no flags are given) 26 29 +(ICUPattern *)patternWithString:(NSString *)aPattern flags:(unsigned)flags; 27 30 +(ICUPattern *)patternWithString:(NSString *)aPattern; 28 31 -(id)initWithString:(NSString *)aPattern; 29 32 -(id)initWithString:(NSString *)aPattern flags:(unsigned)flags; 33 34 +(ICUMatcher *)matcherForString:(NSString *)stringToSearchOver; 35 30 36 -(void *)pattern; 37 38 /* no retain done. the life of the text is given by the caller */ 31 39 -(void)setTextToSearch:(NSString *)s; 32 40 -(void *)textToSearch; 41 42 33 43 -(void)reset; 44 34 45 @end trunk/source/ICUPattern.m
r1 r2 1 1 // 2 // REPattern.m2 // ICUPattern.m 3 3 // CocoaICU 4 4 // … … 6 6 // Copyright 2006 Aaron Evans. All rights reserved. 7 7 // 8 // more info: http://icu.sourceforge.net/apiref/icu4c/uregex_8h.html 8 9 9 10 #import "ICUPattern.h" … … 77 78 if(pattern != NULL) 78 79 free(pattern); 79 80 80 81 [super dealloc]; 81 82 } … … 144 145 145 146 -(NSString *)description { 146 147 147 148 if([self pattern] != NULL) { 148 149 UChar *p = NULL; trunk/source/ICUTest.m
r1 r2 9 9 10 10 #import "ICUTest.h" 11 #import "NSStringICUAdditions.h" 12 #import "ICUPattern.h" 11 13 12 14 @implementation ICUTest … … 22 24 } 23 25 26 -(void)testUTF16String 27 { 28 NSString *inputString = @"this is a test to see if this works or doesn\\'t work"; 29 uint16_t *result = [inputString UTF16String]; 30 int len = 0; 31 while(result[len++] != 0); 32 33 STAssertTrue( (len - 1) == [inputString length], @"UTF16String returned a different length string than input"); 34 } 35 36 -(void)testFind 37 { 38 NSString *searchString = @"bbdfdbbababababaklsdjfababababab"; 39 NSString *patternString = @".*([ab]+).*"; 40 NSArray *results = [searchString findPatternString:patternString]; 41 42 STAssertTrue([results count] == 2, @"Unexpected find results"); 43 } 44 24 45 - (void)testSpeed 25 46 { trunk/source/NSStringICUAdditions.h
r1 r2 16 16 17 17 -(NSString *)findPattern:(ICUPattern *)p replaceAllWith:(NSString *)replacementString; 18 18 19 -(BOOL)matchesPattern:(ICUPattern *)p; 19 20 -(BOOL)matchesPatternString:(NSString *)anExpression; 21 22 -(BOOL)findNext; 23 -(NSRange *)rangeOfCurrentMatch; 24 20 25 -(NSArray *)componentsSeparatedByPattern:(ICUPattern *)p; 26 -(NSArray *)componentsSeparatedByPatternString:(NSString *)s; 27 21 28 -(void *)UTF16String; 22 29 trunk/source/NSStringICUAdditions.m
r1 r2 41 41 -(NSArray *)findPattern:(ICUPattern *)p { 42 42 [p setTextToSearch:self]; 43 43 44 44 UErrorCode status = 0; 45 45 int32_t numberOfGroups = uregex_groupCount((URegularExpression *)[p pattern], &status); … … 121 121 free(destString); 122 122 return result; 123 } 124 125 -(BOOL)findNext 126 { 127 UErrorCode status = 0; 128 BOOL r = uregex_findNext([ 129 } 130 131 -(NSRange *)rangeOfCurrentMatch 132 { 133 134 } 135 136 -(NSArray *)componentsSeparatedByPatternString:(NSString *)s 137 { 138 return [self componentsSeparatedByPattern:[ICUPattern patternWithString:s]]; 123 139 } 124 140