|
@@ -36,39 +36,6 @@
|
|
|
#import "GPBUtilities.h"
|
|
|
#import "GPBWireFormat.h"
|
|
|
|
|
|
-#pragma mark CFDictionaryKeyCallBacks
|
|
|
-
|
|
|
-// We use a custom dictionary here because our keys are numbers and
|
|
|
-// conversion back and forth from NSNumber was costing us performance.
|
|
|
-// If/when we move to C++ this could be done using a std::map and some
|
|
|
-// careful retain/release calls.
|
|
|
-
|
|
|
-static const void *GPBUnknownFieldSetKeyRetain(CFAllocatorRef allocator,
|
|
|
- const void *value) {
|
|
|
-#pragma unused(allocator)
|
|
|
- return value;
|
|
|
-}
|
|
|
-
|
|
|
-static void GPBUnknownFieldSetKeyRelease(CFAllocatorRef allocator,
|
|
|
- const void *value) {
|
|
|
-#pragma unused(allocator)
|
|
|
-#pragma unused(value)
|
|
|
-}
|
|
|
-
|
|
|
-static CFStringRef GPBUnknownFieldSetCopyKeyDescription(const void *value) {
|
|
|
- return CFStringCreateWithFormat(kCFAllocatorDefault, NULL, CFSTR("%d"),
|
|
|
- (int)value);
|
|
|
-}
|
|
|
-
|
|
|
-static Boolean GPBUnknownFieldSetKeyEqual(const void *value1,
|
|
|
- const void *value2) {
|
|
|
- return value1 == value2;
|
|
|
-}
|
|
|
-
|
|
|
-static CFHashCode GPBUnknownFieldSetKeyHash(const void *value) {
|
|
|
- return (CFHashCode)value;
|
|
|
-}
|
|
|
-
|
|
|
#pragma mark Helpers
|
|
|
|
|
|
static void checkNumber(int32_t number) {
|
|
@@ -291,13 +258,9 @@ static void GPBUnknownFieldSetSerializedSizeAsMessageSet(const void *key,
|
|
|
int32_t number = [field number];
|
|
|
checkNumber(number);
|
|
|
if (!fields_) {
|
|
|
- CFDictionaryKeyCallBacks keyCallBacks = {
|
|
|
- // See description above for reason for using custom dictionary.
|
|
|
- 0, GPBUnknownFieldSetKeyRetain, GPBUnknownFieldSetKeyRelease,
|
|
|
- GPBUnknownFieldSetCopyKeyDescription, GPBUnknownFieldSetKeyEqual,
|
|
|
- GPBUnknownFieldSetKeyHash,
|
|
|
- };
|
|
|
- fields_ = CFDictionaryCreateMutable(kCFAllocatorDefault, 0, &keyCallBacks,
|
|
|
+ // Use a custom dictionary here because the keys are numbers and conversion
|
|
|
+ // back and forth from NSNumber isn't worth the cost.
|
|
|
+ fields_ = CFDictionaryCreateMutable(kCFAllocatorDefault, 0, NULL,
|
|
|
&kCFTypeDictionaryValueCallBacks);
|
|
|
}
|
|
|
ssize_t key = number;
|