Commit 9d7f3133 authored by Dave MacLachlan's avatar Dave MacLachlan

Reduce size of GPBDictionary by getting rid of class creation methods

parent 91ff83c0
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
...@@ -78,7 +78,8 @@ ...@@ -78,7 +78,8 @@
//%} //%}
//% //%
//%- (void)testOne { //%- (void)testOne {
//% DICTIONARY_CLASS_DECL##VHELPER(KEY_NAME, VALUE_NAME, VALUE_TYPE) *dict = [GPB##KEY_NAME##VALUE_NAME##Dictionary dictionaryWith##VALUE_NAME$u##:VAL1 forKey:KEY1]; //% DICTIONARY_CLASS_DECL##VHELPER(KEY_NAME, VALUE_NAME, VALUE_TYPE) *dict = [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] init];
//% [dict set##VALUE_NAME$u##:VAL1 forKey:KEY1];
//% XCTAssertNotNil(dict); //% XCTAssertNotNil(dict);
//% XCTAssertEqual(dict.count, 1U); //% XCTAssertEqual(dict.count, 1U);
//%DECLARE_VALUE_STORAGE##VHELPER(VALUE_TYPE, VNAME)TEST_VALUE##VHELPER(VALUE_NAME, dict, VNAME, KEY1, VAL1) //%DECLARE_VALUE_STORAGE##VHELPER(VALUE_TYPE, VNAME)TEST_VALUE##VHELPER(VALUE_NAME, dict, VNAME, KEY1, VAL1)
...@@ -88,6 +89,7 @@ ...@@ -88,6 +89,7 @@
//% XCTAssertEqual##VSUFFIX(a##VNAME$u, VAL1); //% XCTAssertEqual##VSUFFIX(a##VNAME$u, VAL1);
//% XCTAssertNotEqual(stop, NULL); //% XCTAssertNotEqual(stop, NULL);
//% }]; //% }];
//% [dict release];
//%} //%}
//% //%
//%- (void)testBasics { //%- (void)testBasics {
...@@ -223,17 +225,18 @@ ...@@ -223,17 +225,18 @@
//% XCTAssertNotNil(dict); //% XCTAssertNotNil(dict);
//% //%
//% DICTIONARY_CLASS_DECL##VHELPER(KEY_NAME, VALUE_NAME, VALUE_TYPE) *dict2 = //% DICTIONARY_CLASS_DECL##VHELPER(KEY_NAME, VALUE_NAME, VALUE_TYPE) *dict2 =
//% [GPB##KEY_NAME##VALUE_NAME##Dictionary dictionaryWithDictionary:dict]; //% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWithDictionary:dict];
//% XCTAssertNotNil(dict2); //% XCTAssertNotNil(dict2);
//% //%
//% // Should be new pointer, but equal objects. //% // Should be new pointer, but equal objects.
//% XCTAssertNotEqual(dict, dict2); //% XCTAssertNotEqual(dict, dict2);
//% XCTAssertEqualObjects(dict, dict2); //% XCTAssertEqualObjects(dict, dict2);
//% [dict2 release];
//% [dict release]; //% [dict release];
//%} //%}
//% //%
//%- (void)testAdds { //%- (void)testAdds {
//% DICTIONARY_CLASS_DECL##VHELPER(KEY_NAME, VALUE_NAME, VALUE_TYPE) *dict = [GPB##KEY_NAME##VALUE_NAME##Dictionary dictionary]; //% DICTIONARY_CLASS_DECL##VHELPER(KEY_NAME, VALUE_NAME, VALUE_TYPE) *dict = [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] init];
//% XCTAssertNotNil(dict); //% XCTAssertNotNil(dict);
//% //%
//% XCTAssertEqual(dict.count, 0U); //% XCTAssertEqual(dict.count, 0U);
...@@ -255,6 +258,7 @@ ...@@ -255,6 +258,7 @@
//%TEST_VALUE##VHELPER(VALUE_NAME, dict, VNAME, KEY3, VAL3) //%TEST_VALUE##VHELPER(VALUE_NAME, dict, VNAME, KEY3, VAL3)
//%TEST_VALUE##VHELPER(VALUE_NAME, dict, VNAME, KEY4, VAL4) //%TEST_VALUE##VHELPER(VALUE_NAME, dict, VNAME, KEY4, VAL4)
//% [dict2 release]; //% [dict2 release];
//% [dict release];
//%} //%}
//% //%
//%- (void)testRemove { //%- (void)testRemove {
...@@ -522,19 +526,20 @@ ...@@ -522,19 +526,20 @@
//% XCTAssertNotNil(dict); //% XCTAssertNotNil(dict);
//% //%
//% DICTIONARY_CLASS_DECL##VHELPER(KEY_NAME, VALUE_NAME, VALUE_TYPE) *dict2 = //% DICTIONARY_CLASS_DECL##VHELPER(KEY_NAME, VALUE_NAME, VALUE_TYPE) *dict2 =
//% [GPB##KEY_NAME##VALUE_NAME##Dictionary dictionaryWithDictionary:dict]; //% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWithDictionary:dict];
//% XCTAssertNotNil(dict2); //% XCTAssertNotNil(dict2);
//% //%
//% // Should be new pointer, but equal objects. //% // Should be new pointer, but equal objects.
//% XCTAssertNotEqual(dict, dict2); //% XCTAssertNotEqual(dict, dict2);
//% XCTAssertEqualObjects(dict, dict2); //% XCTAssertEqualObjects(dict, dict2);
//% XCTAssertEqual(dict.validationFunc, dict2.validationFunc); // Pointer comparison //% XCTAssertEqual(dict.validationFunc, dict2.validationFunc); // Pointer comparison
//% [dict2 release];
//% [dict release]; //% [dict release];
//%} //%}
//% //%
//%- (void)testUnknownAdds { //%- (void)testUnknownAdds {
//% DICTIONARY_CLASS_DECL##VHELPER(KEY_NAME, VALUE_NAME, VALUE_TYPE) *dict = //% DICTIONARY_CLASS_DECL##VHELPER(KEY_NAME, VALUE_NAME, VALUE_TYPE) *dict =
//% [GPB##KEY_NAME##VALUE_NAME##Dictionary dictionaryWithValidationFunction:TestingEnum_IsValidValue]; //% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWithValidationFunction:TestingEnum_IsValidValue];
//% XCTAssertNotNil(dict); //% XCTAssertNotNil(dict);
//% //%
//% XCTAssertEqual(dict.count, 0U); //% XCTAssertEqual(dict.count, 0U);
...@@ -561,6 +566,7 @@ ...@@ -561,6 +566,7 @@
//%TEST_VALUE##VHELPER(VALUE_NAME, dict, value, KEY4, kGPBUnrecognizedEnumeratorValue) //%TEST_VALUE##VHELPER(VALUE_NAME, dict, value, KEY4, kGPBUnrecognizedEnumeratorValue)
//%TEST_RAW_VALUE##VHELPER(dict, value, KEY4, VAL4) //%TEST_RAW_VALUE##VHELPER(dict, value, KEY4, VAL4)
//% [dict2 release]; //% [dict2 release];
//% [dict release];
//%} //%}
//% //%
//%- (void)testUnknownRemove { //%- (void)testUnknownRemove {
...@@ -729,7 +735,6 @@ ...@@ -729,7 +735,6 @@
//%PDDM-DEFINE TEST_HELPERS(KEY_NAME, KEY_TYPE, KisP) //%PDDM-DEFINE TEST_HELPERS(KEY_NAME, KEY_TYPE, KisP)
//%// To let the testing macros work, add some extra methods to simplify things. //%// To let the testing macros work, add some extra methods to simplify things.
//%@interface GPB##KEY_NAME##EnumDictionary (TestingTweak) //%@interface GPB##KEY_NAME##EnumDictionary (TestingTweak)
//%+ (instancetype)dictionaryWithEnum:(int32_t)value forKey:(KEY_TYPE##KisP$S##KisP)key;
//%- (instancetype)initWithEnums:(const int32_t [])values //%- (instancetype)initWithEnums:(const int32_t [])values
//% forKeys:(const KEY_TYPE##KisP$S##KisP [])keys //% forKeys:(const KEY_TYPE##KisP$S##KisP [])keys
//% count:(NSUInteger)count; //% count:(NSUInteger)count;
...@@ -748,14 +753,6 @@ ...@@ -748,14 +753,6 @@
//%} //%}
//% //%
//%@implementation GPB##KEY_NAME##EnumDictionary (TestingTweak) //%@implementation GPB##KEY_NAME##EnumDictionary (TestingTweak)
//%+ (instancetype)dictionaryWithEnum:(int32_t)value forKey:(KEY_TYPE##KisP$S##KisP)key {
//% // Cast is needed to compiler knows what class we are invoking initWithValues: on to get the
//% // type correct.
//% return [[(GPB##KEY_NAME##EnumDictionary*)[self alloc] initWithValidationFunction:TestingEnum_IsValidValue
//% KEY_NAME$S rawValues:&value
//% KEY_NAME$S forKeys:&key
//% KEY_NAME$S count:1] autorelease];
//%}
//%- (instancetype)initWithEnums:(const int32_t [])values //%- (instancetype)initWithEnums:(const int32_t [])values
//% forKeys:(const KEY_TYPE##KisP$S##KisP [])keys //% forKeys:(const KEY_TYPE##KisP$S##KisP [])keys
//% count:(NSUInteger)count { //% count:(NSUInteger)count {
...@@ -801,7 +798,8 @@ ...@@ -801,7 +798,8 @@
//%} //%}
//% //%
//%- (void)testOne { //%- (void)testOne {
//% DICTIONARY_CLASS_DECL##VHELPER(KEY_NAME, VALUE_NAME, VALUE_TYPE) *dict = [GPB##KEY_NAME##VALUE_NAME##Dictionary dictionaryWith##VALUE_NAME$u##:VAL1 forKey:KEY1]; //% DICTIONARY_CLASS_DECL##VHELPER(KEY_NAME, VALUE_NAME, VALUE_TYPE) *dict = [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] init];
//% [dict set##VALUE_NAME$u##:VAL1 forKey:KEY1];
//% XCTAssertNotNil(dict); //% XCTAssertNotNil(dict);
//% XCTAssertEqual(dict.count, 1U); //% XCTAssertEqual(dict.count, 1U);
//%DECLARE_VALUE_STORAGE##VHELPER(VALUE_TYPE, VNAME)TEST_VALUE##VHELPER(VALUE_NAME, dict, VNAME, KEY1, VAL1) //%DECLARE_VALUE_STORAGE##VHELPER(VALUE_TYPE, VNAME)TEST_VALUE##VHELPER(VALUE_NAME, dict, VNAME, KEY1, VAL1)
...@@ -811,6 +809,7 @@ ...@@ -811,6 +809,7 @@
//% XCTAssertEqual##VSUFFIX(a##VNAME$u, VAL1); //% XCTAssertEqual##VSUFFIX(a##VNAME$u, VAL1);
//% XCTAssertNotEqual(stop, NULL); //% XCTAssertNotEqual(stop, NULL);
//% }]; //% }];
//% [dict release];
//%} //%}
//% //%
//%- (void)testBasics { //%- (void)testBasics {
...@@ -944,17 +943,18 @@ ...@@ -944,17 +943,18 @@
//% XCTAssertNotNil(dict); //% XCTAssertNotNil(dict);
//% //%
//% DICTIONARY_CLASS_DECL##VHELPER(KEY_NAME, VALUE_NAME, VALUE_TYPE) *dict2 = //% DICTIONARY_CLASS_DECL##VHELPER(KEY_NAME, VALUE_NAME, VALUE_TYPE) *dict2 =
//% [GPB##KEY_NAME##VALUE_NAME##Dictionary dictionaryWithDictionary:dict]; //% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWithDictionary:dict];
//% XCTAssertNotNil(dict2); //% XCTAssertNotNil(dict2);
//% //%
//% // Should be new pointer, but equal objects. //% // Should be new pointer, but equal objects.
//% XCTAssertNotEqual(dict, dict2); //% XCTAssertNotEqual(dict, dict2);
//% XCTAssertEqualObjects(dict, dict2); //% XCTAssertEqualObjects(dict, dict2);
//% [dict2 release];
//% [dict release]; //% [dict release];
//%} //%}
//% //%
//%- (void)testAdds { //%- (void)testAdds {
//% DICTIONARY_CLASS_DECL##VHELPER(KEY_NAME, VALUE_NAME, VALUE_TYPE) *dict = [GPB##KEY_NAME##VALUE_NAME##Dictionary dictionary]; //% DICTIONARY_CLASS_DECL##VHELPER(KEY_NAME, VALUE_NAME, VALUE_TYPE) *dict = [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] init];
//% XCTAssertNotNil(dict); //% XCTAssertNotNil(dict);
//% //%
//% XCTAssertEqual(dict.count, 0U); //% XCTAssertEqual(dict.count, 0U);
...@@ -974,6 +974,7 @@ ...@@ -974,6 +974,7 @@
//%DECLARE_VALUE_STORAGE##VHELPER(VALUE_TYPE, VNAME)TEST_VALUE##VHELPER(VALUE_NAME, dict, VNAME, KEY1, VAL1) //%DECLARE_VALUE_STORAGE##VHELPER(VALUE_TYPE, VNAME)TEST_VALUE##VHELPER(VALUE_NAME, dict, VNAME, KEY1, VAL1)
//%TEST_VALUE##VHELPER(VALUE_NAME, dict, VNAME, KEY2, VAL2) //%TEST_VALUE##VHELPER(VALUE_NAME, dict, VNAME, KEY2, VAL2)
//% [dict2 release]; //% [dict2 release];
//% [dict release];
//%} //%}
//% //%
//%- (void)testRemove { //%- (void)testRemove {
......
...@@ -1114,10 +1114,10 @@ ...@@ -1114,10 +1114,10 @@
- (void)testMap_Proto2UnknownEnum { - (void)testMap_Proto2UnknownEnum {
TestEnumMapPlusExtra *orig = [[TestEnumMapPlusExtra alloc] init]; TestEnumMapPlusExtra *orig = [[TestEnumMapPlusExtra alloc] init];
orig.knownMapField = [GPBInt32EnumDictionary orig.knownMapField = [[[GPBInt32EnumDictionary alloc]
dictionaryWithValidationFunction:Proto2MapEnumPlusExtra_IsValidValue]; initWithValidationFunction:Proto2MapEnumPlusExtra_IsValidValue] autorelease];
orig.unknownMapField = [GPBInt32EnumDictionary orig.unknownMapField = [[[GPBInt32EnumDictionary alloc]
dictionaryWithValidationFunction:Proto2MapEnumPlusExtra_IsValidValue]; initWithValidationFunction:Proto2MapEnumPlusExtra_IsValidValue] autorelease];
[orig.knownMapField setEnum:Proto2MapEnumPlusExtra_EProto2MapEnumFoo [orig.knownMapField setEnum:Proto2MapEnumPlusExtra_EProto2MapEnumFoo
forKey:0]; forKey:0];
[orig.unknownMapField setEnum:Proto2MapEnumPlusExtra_EProto2MapEnumExtra [orig.unknownMapField setEnum:Proto2MapEnumPlusExtra_EProto2MapEnumExtra
......
...@@ -1238,7 +1238,8 @@ ...@@ -1238,7 +1238,8 @@
// with different objects that are equal). // with different objects that are equal).
TestRecursiveMessageWithRepeatedField *message3 = TestRecursiveMessageWithRepeatedField *message3 =
[TestRecursiveMessageWithRepeatedField message]; [TestRecursiveMessageWithRepeatedField message];
message3.iToI = [GPBInt32Int32Dictionary dictionaryWithInt32:10 forKey:20]; message3.iToI = [[GPBInt32Int32Dictionary alloc] init];
[message3.iToI setInt32:10 forKey:20];
message3.strToStr = message3.strToStr =
[NSMutableDictionary dictionaryWithObject:@"abc" forKey:@"123"]; [NSMutableDictionary dictionaryWithObject:@"abc" forKey:@"123"];
XCTAssertNotNil(message.iToI); XCTAssertNotNil(message.iToI);
...@@ -1323,7 +1324,8 @@ ...@@ -1323,7 +1324,8 @@
XCTAssertFalse([message hasA]); XCTAssertFalse([message hasA]);
GPBInt32Int32Dictionary *iToI = [message.a.iToI retain]; GPBInt32Int32Dictionary *iToI = [message.a.iToI retain];
XCTAssertEqual(iToI->_autocreator, message.a); // Pointer comparision XCTAssertEqual(iToI->_autocreator, message.a); // Pointer comparision
message.a.iToI = [GPBInt32Int32Dictionary dictionaryWithInt32:6 forKey:7]; message.a.iToI = [[GPBInt32Int32Dictionary alloc] init];
[message.a.iToI setInt32:6 forKey:7];
XCTAssertTrue([message hasA]); XCTAssertTrue([message hasA]);
XCTAssertNotEqual(message.a.iToI, iToI); // Pointer comparision XCTAssertNotEqual(message.a.iToI, iToI); // Pointer comparision
XCTAssertNil(iToI->_autocreator); XCTAssertNil(iToI->_autocreator);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment