/ NSData.m
NSData.m
1 // 2 // NSData.m 3 // CoreFoundation 4 // 5 // Copyright (c) 2014 Apportable. All rights reserved. 6 // 7 8 #import <CoreFoundation/CFData.h> 9 #import <Foundation/NSData.h> 10 #import "CFPriv.h" 11 12 @implementation NSData 13 @end 14 15 @implementation NSMutableData 16 @end 17 18 CF_PRIVATE 19 @interface __NSCFData : NSMutableData { 20 unsigned char _cfinfo[4]; 21 CFIndex _length; 22 CFIndex _capacity; 23 CFAllocatorRef *_bytesDeallocator; 24 char *_bytes; 25 } 26 @end 27 28 @implementation __NSCFData 29 30 + (BOOL)automaticallyNotifiesObserversForKey:(NSString *)key 31 { 32 return NO; 33 } 34 35 - (void)setLength:(NSUInteger)length 36 { 37 CFDataSetLength((CFMutableDataRef)self, length); 38 } 39 40 - (void *)mutableBytes 41 { 42 return CFDataGetMutableBytePtr((CFMutableDataRef)self); 43 } 44 45 - (const void *)bytes 46 { 47 return CFDataGetBytePtr((CFDataRef)self); 48 } 49 50 - (NSUInteger)length 51 { 52 return CFDataGetLength((CFDataRef)self); 53 } 54 55 - (id)copyWithZone:(NSZone *)zone 56 { 57 return (id)CFDataCreateCopy(kCFAllocatorDefault, (CFDataRef)self); 58 } 59 60 - (NSUInteger)retainCount 61 { 62 return CFGetRetainCount((CFTypeRef)self); 63 } 64 65 - (BOOL)_isDeallocating 66 { 67 return _CFIsDeallocating((CFTypeRef)self); 68 } 69 70 - (BOOL)_tryRetain 71 { 72 return _CFTryRetain((CFTypeRef)self) != NULL; 73 } 74 75 - (oneway void)release 76 { 77 CFRelease((CFTypeRef)self); 78 } 79 80 - (id)retain 81 { 82 return (id)CFRetain((CFTypeRef)self); 83 } 84 85 - (NSUInteger)hash 86 { 87 return CFHash((CFTypeRef)self); 88 } 89 90 - (BOOL)isEqual:(id)object 91 { 92 if (object == nil) 93 { 94 return NO; 95 } 96 return CFEqual((CFTypeRef)self, (CFTypeRef)object); 97 } 98 99 @end