/ NSCharacterSet.m
NSCharacterSet.m
1 // 2 // NSCharacterSet.m 3 // CoreFoundation 4 // 5 // Copyright (c) 2014 Apportable. All rights reserved. 6 // 7 8 #import <Foundation/NSCharacterSet.h> 9 #import "NSCFType.h" 10 #import "CFInternal.h" 11 #import "NSObjectInternal.h" 12 13 extern Boolean __CFCharacterSetIsMutable(CFCharacterSetRef cset); 14 extern void CFCharacterSetFast(CFMutableCharacterSetRef theSet); 15 extern void CFCharacterSetCompact(CFMutableCharacterSetRef theSet); 16 17 CF_PRIVATE 18 @interface __NSCFCharacterSet : __NSCFType 19 @end 20 21 @implementation NSCharacterSet 22 23 + (id)controlCharacterSet 24 { 25 return (id)CFCharacterSetGetPredefined(kCFCharacterSetControl); 26 } 27 28 + (id)whitespaceCharacterSet 29 { 30 return (id)CFCharacterSetGetPredefined(kCFCharacterSetWhitespace); 31 } 32 33 + (id)whitespaceAndNewlineCharacterSet 34 { 35 return (id)CFCharacterSetGetPredefined(kCFCharacterSetWhitespaceAndNewline); 36 } 37 38 + (id)decimalDigitCharacterSet 39 { 40 return (id)CFCharacterSetGetPredefined(kCFCharacterSetDecimalDigit); 41 } 42 43 + (id)letterCharacterSet 44 { 45 return (id)CFCharacterSetGetPredefined(kCFCharacterSetLetter); 46 } 47 48 + (id)lowercaseLetterCharacterSet 49 { 50 return (id)CFCharacterSetGetPredefined(kCFCharacterSetLowercaseLetter); 51 } 52 53 + (id)uppercaseLetterCharacterSet 54 { 55 return (id)CFCharacterSetGetPredefined(kCFCharacterSetUppercaseLetter); 56 } 57 58 + (id)nonBaseCharacterSet 59 { 60 return (id)CFCharacterSetGetPredefined(kCFCharacterSetNonBase); 61 } 62 63 + (id)alphanumericCharacterSet 64 { 65 return (id)CFCharacterSetGetPredefined(kCFCharacterSetAlphaNumeric); 66 } 67 68 + (id)decomposableCharacterSet 69 { 70 return (id)CFCharacterSetGetPredefined(kCFCharacterSetDecomposable); 71 } 72 73 + (id)illegalCharacterSet 74 { 75 return (id)CFCharacterSetGetPredefined(kCFCharacterSetIllegal); 76 } 77 78 + (id)punctuationCharacterSet 79 { 80 return (id)CFCharacterSetGetPredefined(kCFCharacterSetPunctuation); 81 } 82 83 + (id)capitalizedLetterCharacterSet 84 { 85 return (id)CFCharacterSetGetPredefined(kCFCharacterSetCapitalizedLetter); 86 } 87 88 + (id)symbolCharacterSet 89 { 90 return (id)CFCharacterSetGetPredefined(kCFCharacterSetSymbol); 91 } 92 93 + (id)newlineCharacterSet 94 { 95 return (id)CFCharacterSetGetPredefined(kCFCharacterSetNewline); 96 } 97 98 + (id)characterSetWithRange:(NSRange)range 99 { 100 return [(NSCharacterSet *)CFCharacterSetCreateWithCharactersInRange(kCFAllocatorDefault, CFRangeMake(range.location, range.length)) autorelease]; 101 } 102 103 + (id)characterSetWithCharactersInString:(NSString *)string 104 { 105 return [(NSCharacterSet *)CFCharacterSetCreateWithCharactersInString(kCFAllocatorDefault, (CFStringRef)string) autorelease]; 106 } 107 108 + (id)characterSetWithBitmapRepresentation:(NSData *)data 109 { 110 return [(NSCharacterSet *)CFCharacterSetCreateWithBitmapRepresentation(kCFAllocatorDefault, (CFDataRef)data) autorelease]; 111 } 112 113 + (id)characterSetWithContentsOfFile:(NSString *)path 114 { 115 return [self characterSetWithBitmapRepresentation:[NSData dataWithContentsOfMappedFile:path]]; 116 } 117 118 - (id)init 119 { 120 [self release]; 121 return (id)CFCharacterSetCreateWithCharactersInRange(kCFAllocatorDefault, CFRangeMake(0, 0)); 122 } 123 124 - (BOOL)characterIsMember:(unichar)character 125 { 126 NSRequestConcreteImplementation(); 127 return NO; 128 } 129 130 - (NSData *)bitmapRepresentation 131 { 132 NSRequestConcreteImplementation(); 133 return nil; 134 } 135 136 - (NSCharacterSet *)invertedSet 137 { 138 NSRequestConcreteImplementation(); 139 return nil; 140 } 141 142 - (BOOL)longCharacterIsMember:(UTF32Char)character 143 { 144 NSRequestConcreteImplementation(); 145 return NO; 146 } 147 148 - (BOOL)isSupersetOfSet:(NSCharacterSet *)other 149 { 150 NSRequestConcreteImplementation(); 151 return NO; 152 } 153 154 - (BOOL)hasMemberInPlane:(uint8_t)plane 155 { 156 NSRequestConcreteImplementation(); 157 return NO; 158 } 159 160 - (id)initWithCoder:(NSCoder *)aDecoder 161 { 162 NSRequestConcreteImplementation(); 163 [self release]; 164 return nil; 165 } 166 167 - (void)encodeWithCoder:(NSCoder *)aCoder 168 { 169 NSRequestConcreteImplementation(); 170 } 171 172 - (id)copyWithZone:(NSZone *)zone 173 { 174 NSRequestConcreteImplementation(); 175 return nil; 176 } 177 178 - (id)mutableCopyWithZone:(NSZone *)zone 179 { 180 NSRequestConcreteImplementation(); 181 return nil; 182 } 183 184 - (CFTypeID)_cfTypeID 185 { 186 return CFCharacterSetGetTypeID(); 187 } 188 189 - (void)makeImmutable 190 { 191 192 } 193 194 - (BOOL)isMutable 195 { 196 return NO; 197 } 198 199 - (CFCharacterSetRef)_expandedCFCharacterSet 200 { 201 return NULL; 202 } 203 204 @end 205 206 @implementation NSMutableCharacterSet 207 208 + (id)characterSetWithContentsOfFile:(NSString *)path 209 { 210 return [[[NSCharacterSet characterSetWithContentsOfFile:path] mutableCopyWithZone:nil] autorelease]; 211 } 212 213 + (id)characterSetWithBitmapRepresentation:(NSData *)data 214 { 215 return [[[NSCharacterSet characterSetWithBitmapRepresentation:data] mutableCopyWithZone:nil] autorelease]; 216 } 217 218 + (id)newlineCharacterSet 219 { 220 return [[[NSCharacterSet newlineCharacterSet] mutableCopyWithZone:nil] autorelease]; 221 } 222 223 + (id)symbolCharacterSet 224 { 225 return [[[NSCharacterSet symbolCharacterSet] mutableCopyWithZone:nil] autorelease]; 226 } 227 228 + (id)capitalizedLetterCharacterSet 229 { 230 return [[[NSCharacterSet capitalizedLetterCharacterSet] mutableCopyWithZone:nil] autorelease]; 231 } 232 233 + (id)punctuationCharacterSet 234 { 235 return [[[NSCharacterSet punctuationCharacterSet] mutableCopyWithZone:nil] autorelease]; 236 } 237 238 + (id)illegalCharacterSet 239 { 240 return [[[NSCharacterSet illegalCharacterSet] mutableCopyWithZone:nil] autorelease]; 241 } 242 243 + (id)decomposableCharacterSet 244 { 245 return [[[NSCharacterSet decomposableCharacterSet] mutableCopyWithZone:nil] autorelease]; 246 } 247 248 + (id)alphanumericCharacterSet 249 { 250 return [[[NSCharacterSet alphanumericCharacterSet] mutableCopyWithZone:nil] autorelease]; 251 } 252 253 + (id)nonBaseCharacterSet 254 { 255 return [[[NSCharacterSet nonBaseCharacterSet] mutableCopyWithZone:nil] autorelease]; 256 } 257 258 + (id)uppercaseLetterCharacterSet 259 { 260 return [[[NSCharacterSet uppercaseLetterCharacterSet] mutableCopyWithZone:nil] autorelease]; 261 } 262 263 + (id)lowercaseLetterCharacterSet 264 { 265 return [[[NSCharacterSet lowercaseLetterCharacterSet] mutableCopyWithZone:nil] autorelease]; 266 } 267 268 + (id)letterCharacterSet 269 { 270 return [[[NSCharacterSet letterCharacterSet] mutableCopyWithZone:nil] autorelease]; 271 } 272 273 + (id)decimalDigitCharacterSet 274 { 275 return [[[NSCharacterSet decimalDigitCharacterSet] mutableCopyWithZone:nil] autorelease]; 276 } 277 278 + (id)whitespaceAndNewlineCharacterSet 279 { 280 return [[[NSCharacterSet whitespaceAndNewlineCharacterSet] mutableCopyWithZone:nil] autorelease]; 281 } 282 283 + (id)whitespaceCharacterSet 284 { 285 return [[[NSCharacterSet whitespaceCharacterSet] mutableCopyWithZone:nil] autorelease]; 286 } 287 288 + (id)controlCharacterSet 289 { 290 return [[[NSCharacterSet controlCharacterSet] mutableCopyWithZone:nil] autorelease]; 291 } 292 293 + (id)characterSetWithCharactersInString:(NSString *)string 294 { 295 return [[[NSCharacterSet characterSetWithCharactersInString:string] mutableCopyWithZone:nil] autorelease]; 296 } 297 298 + (id)characterSetWithRange:(NSRange)range 299 { 300 return [[[NSCharacterSet characterSetWithRange:range] mutableCopyWithZone:nil] autorelease]; 301 } 302 303 - (void)addCharactersInRange:(NSRange)range 304 { 305 NSRequestConcreteImplementation(); 306 } 307 308 - (void)removeCharactersInRange:(NSRange)range 309 { 310 NSRequestConcreteImplementation(); 311 } 312 313 - (void)addCharactersInString:(NSString *)string 314 { 315 NSRequestConcreteImplementation(); 316 } 317 318 - (void)removeCharactersInString:(NSString *)string 319 { 320 NSRequestConcreteImplementation(); 321 } 322 323 - (void)formUnionWithCharacterSet:(NSCharacterSet *)other 324 { 325 NSRequestConcreteImplementation(); 326 } 327 328 - (void)formIntersectionWithCharacterSet:(NSCharacterSet *)other 329 { 330 NSRequestConcreteImplementation(); 331 } 332 333 - (void)invert 334 { 335 NSRequestConcreteImplementation(); 336 } 337 338 - (BOOL)isMutable 339 { 340 return YES; 341 } 342 343 @end 344 345 @implementation __NSCFCharacterSet 346 347 + (BOOL)automaticallyNotifiesObserversForKey:(NSString *)key 348 { 349 return NO; 350 } 351 352 - (void)encodeWithCoder:(NSCoder *)coder 353 { 354 355 } 356 357 - (Class)classForCoder 358 { 359 if (__CFCharacterSetIsMutable((CFCharacterSetRef)self)) 360 { 361 return [NSMutableCharacterSet class]; 362 } 363 else 364 { 365 return [NSCharacterSet class]; 366 } 367 } 368 369 - (Class)classForKeyedArchiver 370 { 371 if (__CFCharacterSetIsMutable((CFCharacterSetRef)self)) 372 { 373 return [NSMutableCharacterSet class]; 374 } 375 else 376 { 377 return [NSCharacterSet class]; 378 } 379 } 380 381 - (void)makeCharacterSetFast 382 { 383 if (__CFCharacterSetIsMutable((CFCharacterSetRef)self)) 384 { 385 CFCharacterSetFast((CFMutableCharacterSetRef)self); 386 } 387 } 388 389 - (void)makeCharacterSetCompact 390 { 391 if (__CFCharacterSetIsMutable((CFCharacterSetRef)self)) 392 { 393 CFCharacterSetCompact((CFMutableCharacterSetRef)self); 394 } 395 } 396 397 - (void)invert 398 { 399 if (__CFCharacterSetIsMutable((CFCharacterSetRef)self)) 400 { 401 CFCharacterSetInvert((CFMutableCharacterSetRef)self); 402 } 403 } 404 405 - (void)formIntersectionWithCharacterSet:(NSCharacterSet *)other 406 { 407 if (__CFCharacterSetIsMutable((CFCharacterSetRef)self)) 408 { 409 CFCharacterSetIntersect((CFMutableCharacterSetRef)self, (CFCharacterSetRef)other); 410 } 411 } 412 413 - (void)formUnionWithCharacterSet:(NSCharacterSet *)other 414 { 415 if (__CFCharacterSetIsMutable((CFCharacterSetRef)self)) 416 { 417 CFCharacterSetUnion((CFMutableCharacterSetRef)self, (CFCharacterSetRef)other); 418 } 419 } 420 421 - (void)removeCharactersInString:(NSString *)string 422 { 423 if (__CFCharacterSetIsMutable((CFCharacterSetRef)self)) 424 { 425 CFCharacterSetRemoveCharactersInString((CFMutableCharacterSetRef)self, (CFStringRef)string); 426 } 427 } 428 429 - (void)addCharactersInString:(NSString *)string 430 { 431 if (__CFCharacterSetIsMutable((CFCharacterSetRef)self)) 432 { 433 CFCharacterSetAddCharactersInString((CFMutableCharacterSetRef)self, (CFStringRef)string); 434 } 435 } 436 437 - (void)removeCharactersInRange:(NSRange)range 438 { 439 if (__CFCharacterSetIsMutable((CFCharacterSetRef)self)) 440 { 441 CFCharacterSetRemoveCharactersInRange((CFMutableCharacterSetRef)self, CFRangeMake(range.location, range.length)); 442 } 443 } 444 445 - (void)addCharactersInRange:(NSRange)range 446 { 447 if (__CFCharacterSetIsMutable((CFCharacterSetRef)self)) 448 { 449 CFCharacterSetAddCharactersInRange((CFMutableCharacterSetRef)self, CFRangeMake(range.location, range.length)); 450 } 451 } 452 453 - (NSCharacterSet *)invertedSet 454 { 455 return [(NSCharacterSet *)CFCharacterSetCreateInvertedSet(kCFAllocatorDefault, (CFCharacterSetRef)self) autorelease]; 456 } 457 458 - (NSData *)bitmapRepresentation 459 { 460 return [(NSData *)CFCharacterSetCreateBitmapRepresentation(kCFAllocatorDefault, (CFCharacterSetRef)self) autorelease]; 461 } 462 463 - (BOOL)hasMemberInPlane:(uint8_t)plane 464 { 465 return CFCharacterSetHasMemberInPlane((CFCharacterSetRef)self, plane); 466 } 467 468 - (BOOL)isSupersetOfSet:(id)other 469 { 470 return CFCharacterSetIsSupersetOfSet((CFCharacterSetRef)self, (CFCharacterSetRef)other); 471 } 472 473 - (BOOL)longCharacterIsMember:(UTF32Char)character 474 { 475 return CFCharacterSetIsLongCharacterMember((CFCharacterSetRef)self, character); 476 } 477 478 - (BOOL)characterIsMember:(unichar)character 479 { 480 return CFCharacterSetIsCharacterMember((CFCharacterSetRef)self, character); 481 } 482 483 - (id)mutableCopyWithZone:(NSZone *)zone 484 { 485 return (id)CFCharacterSetCreateMutableCopy(kCFAllocatorDefault, (CFCharacterSetRef)self); 486 } 487 488 - (id)copyWithZone:(NSZone *)zone 489 { 490 return (id)CFCharacterSetCreateCopy(kCFAllocatorDefault, (CFCharacterSetRef)self); 491 } 492 493 - (NSUInteger)retainCount 494 { 495 return CFGetRetainCount((CFTypeRef)self); 496 } 497 498 - (BOOL)_isDeallocating 499 { 500 return _CFIsDeallocating((CFTypeRef)self); 501 } 502 503 - (BOOL)_tryRetain 504 { 505 return _CFTryRetain((CFTypeRef)self) != NULL; 506 } 507 508 - (oneway void)release 509 { 510 CFRelease((CFTypeRef)self); 511 } 512 513 - (id)retain 514 { 515 return (id)CFRetain((CFTypeRef)self); 516 } 517 518 - (NSUInteger)hash 519 { 520 return CFHash((CFTypeRef)self); 521 } 522 523 - (BOOL)isEqual:(id)other 524 { 525 if (other == nil) 526 { 527 return NO; 528 } 529 return CFEqual((CFTypeRef)self, (CFTypeRef)other); 530 } 531 532 @end