/ 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