Merge pull request #3884 from dmaclach/unsafe
Simplify getter/setter method implementations
This commit is contained in:
commit
6552c5af3f
@ -2998,7 +2998,10 @@ typedef struct ResolveIvarAccessorMethodResult {
|
|||||||
SEL encodingSelector;
|
SEL encodingSelector;
|
||||||
} ResolveIvarAccessorMethodResult;
|
} 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) {
|
ResolveIvarAccessorMethodResult *result) {
|
||||||
GPBDataType fieldDataType = GPBGetFieldDataType(field);
|
GPBDataType fieldDataType = GPBGetFieldDataType(field);
|
||||||
switch (fieldDataType) {
|
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,
|
GPBFileSyntax syntax,
|
||||||
ResolveIvarAccessorMethodResult *result) {
|
ResolveIvarAccessorMethodResult *result) {
|
||||||
GPBDataType fieldDataType = GPBGetFieldDataType(field);
|
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
|
// 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
|
// 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.
|
// no need for checks here to see if has*/setHas* are allowed.
|
||||||
|
|
||||||
ResolveIvarAccessorMethodResult result = {NULL, NULL};
|
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);
|
BOOL isMapOrArray = GPBFieldIsMapOrArray(field);
|
||||||
if (!isMapOrArray) {
|
if (!isMapOrArray) {
|
||||||
// Single fields.
|
// Single fields.
|
||||||
|
Loading…
Reference in New Issue
Block a user