|
|
|
@ -2998,7 +2998,10 @@ typedef struct ResolveIvarAccessorMethodResult { |
|
|
|
|
SEL encodingSelector; |
|
|
|
|
} ResolveIvarAccessorMethodResult; |
|
|
|
|
|
|
|
|
|
static void ResolveIvarGet(GPBFieldDescriptor *field, |
|
|
|
|
// |field| can be __unsafe_unretained because they are created at startup |
|
|
|
|
// and are essentially global. No need to pay for retain/release when |
|
|
|
|
// they are captured in blocks. |
|
|
|
|
static void ResolveIvarGet(__unsafe_unretained GPBFieldDescriptor *field, |
|
|
|
|
ResolveIvarAccessorMethodResult *result) { |
|
|
|
|
GPBDataType fieldDataType = GPBGetFieldDataType(field); |
|
|
|
|
switch (fieldDataType) { |
|
|
|
@ -3040,7 +3043,8 @@ static void ResolveIvarGet(GPBFieldDescriptor *field, |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static void ResolveIvarSet(GPBFieldDescriptor *field, |
|
|
|
|
// See comment about __unsafe_unretained on ResolveIvarGet. |
|
|
|
|
static void ResolveIvarSet(__unsafe_unretained GPBFieldDescriptor *field, |
|
|
|
|
GPBFileSyntax syntax, |
|
|
|
|
ResolveIvarAccessorMethodResult *result) { |
|
|
|
|
GPBDataType fieldDataType = GPBGetFieldDataType(field); |
|
|
|
@ -3084,9 +3088,10 @@ static void ResolveIvarSet(GPBFieldDescriptor *field, |
|
|
|
|
// NOTE: hasOrCountSel_/setHasSel_ will be NULL if the field for the given |
|
|
|
|
// message should not have has support (done in GPBDescriptor.m), so there is |
|
|
|
|
// no need for checks here to see if has*/setHas* are allowed. |
|
|
|
|
|
|
|
|
|
ResolveIvarAccessorMethodResult result = {NULL, NULL}; |
|
|
|
|
for (GPBFieldDescriptor *field in descriptor->fields_) { |
|
|
|
|
|
|
|
|
|
// See comment about __unsafe_unretained on ResolveIvarGet. |
|
|
|
|
for (__unsafe_unretained GPBFieldDescriptor *field in descriptor->fields_) { |
|
|
|
|
BOOL isMapOrArray = GPBFieldIsMapOrArray(field); |
|
|
|
|
if (!isMapOrArray) { |
|
|
|
|
// Single fields. |
|
|
|
|