| Index: third_party/protobuf/objectivec/GPBUtilities.m
|
| diff --git a/third_party/protobuf/objectivec/GPBUtilities.m b/third_party/protobuf/objectivec/GPBUtilities.m
|
| index eaa28bbc163fd72150f85d93ef5f821518366e39..447c749aa76779877e6f754a69f248ba414cf1db 100644
|
| --- a/third_party/protobuf/objectivec/GPBUtilities.m
|
| +++ b/third_party/protobuf/objectivec/GPBUtilities.m
|
| @@ -145,9 +145,8 @@ void GPBSetHasIvar(GPBMessage *self, int32_t idx, uint32_t fieldNumber,
|
| }
|
|
|
| void GPBMaybeClearOneof(GPBMessage *self, GPBOneofDescriptor *oneof,
|
| - uint32_t fieldNumberNotToClear) {
|
| - int32_t hasIndex = oneof->oneofDescription_->index;
|
| - uint32_t fieldNumberSet = GPBGetHasOneof(self, hasIndex);
|
| + int32_t oneofHasIndex, uint32_t fieldNumberNotToClear) {
|
| + uint32_t fieldNumberSet = GPBGetHasOneof(self, oneofHasIndex);
|
| if ((fieldNumberSet == fieldNumberNotToClear) || (fieldNumberSet == 0)) {
|
| // Do nothing/nothing set in the oneof.
|
| return;
|
| @@ -168,7 +167,7 @@ void GPBMaybeClearOneof(GPBMessage *self, GPBOneofDescriptor *oneof,
|
|
|
| // Set to nothing stored in the oneof.
|
| // (field number doesn't matter since setting to nothing).
|
| - GPBSetHasIvar(self, hasIndex, 1, NO);
|
| + GPBSetHasIvar(self, oneofHasIndex, 1, NO);
|
| }
|
|
|
| #pragma mark - IVar accessors
|
| @@ -200,7 +199,8 @@ void GPBMaybeClearOneof(GPBMessage *self, GPBOneofDescriptor *oneof,
|
| //% NAME$S GPBFileSyntax syntax) {
|
| //% GPBOneofDescriptor *oneof = field->containingOneof_;
|
| //% if (oneof) {
|
| -//% GPBMaybeClearOneof(self, oneof, GPBFieldNumber(field));
|
| +//% GPBMessageFieldDescription *fieldDesc = field->description_;
|
| +//% GPBMaybeClearOneof(self, oneof, fieldDesc->hasIndex, fieldDesc->number);
|
| //% }
|
| //% NSCAssert(self->messageStorage_ != NULL,
|
| //% @"%@: All messages should have storage (from init)",
|
| @@ -321,7 +321,8 @@ void GPBSetRetainedObjectIvarWithFieldInternal(GPBMessage *self,
|
| // oneof.
|
| GPBOneofDescriptor *oneof = field->containingOneof_;
|
| if (oneof) {
|
| - GPBMaybeClearOneof(self, oneof, GPBFieldNumber(field));
|
| + GPBMessageFieldDescription *fieldDesc = field->description_;
|
| + GPBMaybeClearOneof(self, oneof, fieldDesc->hasIndex, fieldDesc->number);
|
| }
|
| // Clear "has" if they are being set to nil.
|
| BOOL setHasValue = (value != nil);
|
| @@ -411,6 +412,7 @@ id GPBGetObjectIvarWithField(GPBMessage *self, GPBFieldDescriptor *field) {
|
| return field.defaultValue.valueMessage;
|
| }
|
|
|
| + GPBPrepareReadOnlySemaphore(self);
|
| dispatch_semaphore_wait(self->readOnlySemaphore_, DISPATCH_TIME_FOREVER);
|
| GPBMessage *result = GPBGetObjectIvarWithFieldNoAutocreate(self, field);
|
| if (!result) {
|
| @@ -476,15 +478,15 @@ void GPBSetMessageRawEnumField(GPBMessage *self, GPBFieldDescriptor *field,
|
| GPBSetInt32IvarWithFieldInternal(self, field, value, syntax);
|
| }
|
|
|
| -//%PDDM-EXPAND IVAR_POD_ACCESSORS_DEFN(Bool, BOOL)
|
| -// This block of code is generated, do not edit it directly.
|
| -
|
| BOOL GPBGetMessageBoolField(GPBMessage *self,
|
| GPBFieldDescriptor *field) {
|
| if (GPBGetHasIvarField(self, field)) {
|
| - uint8_t *storage = (uint8_t *)self->messageStorage_;
|
| - BOOL *typePtr = (BOOL *)&storage[field->description_->offset];
|
| - return *typePtr;
|
| + // Bools are stored in the has bits to avoid needing explicit space in the
|
| + // storage structure.
|
| + // (the field number passed to the HasIvar helper doesn't really matter
|
| + // since the offset is never negative)
|
| + GPBMessageFieldDescription *fieldDesc = field->description_;
|
| + return GPBGetHasIvar(self, (int32_t)(fieldDesc->offset), fieldDesc->number);
|
| } else {
|
| return field.defaultValue.valueBool;
|
| }
|
| @@ -503,19 +505,18 @@ void GPBSetBoolIvarWithFieldInternal(GPBMessage *self,
|
| GPBFieldDescriptor *field,
|
| BOOL value,
|
| GPBFileSyntax syntax) {
|
| + GPBMessageFieldDescription *fieldDesc = field->description_;
|
| GPBOneofDescriptor *oneof = field->containingOneof_;
|
| if (oneof) {
|
| - GPBMaybeClearOneof(self, oneof, GPBFieldNumber(field));
|
| + GPBMaybeClearOneof(self, oneof, fieldDesc->hasIndex, fieldDesc->number);
|
| }
|
| - NSCAssert(self->messageStorage_ != NULL,
|
| - @"%@: All messages should have storage (from init)",
|
| - [self class]);
|
| -#if defined(__clang_analyzer__)
|
| - if (self->messageStorage_ == NULL) return;
|
| -#endif
|
| - uint8_t *storage = (uint8_t *)self->messageStorage_;
|
| - BOOL *typePtr = (BOOL *)&storage[field->description_->offset];
|
| - *typePtr = value;
|
| +
|
| + // Bools are stored in the has bits to avoid needing explicit space in the
|
| + // storage structure.
|
| + // (the field number passed to the HasIvar helper doesn't really matter since
|
| + // the offset is never negative)
|
| + GPBSetHasIvar(self, (int32_t)(fieldDesc->offset), fieldDesc->number, value);
|
| +
|
| // proto2: any value counts as having been set; proto3, it
|
| // has to be a non zero value.
|
| BOOL hasValue =
|
| @@ -553,7 +554,8 @@ void GPBSetInt32IvarWithFieldInternal(GPBMessage *self,
|
| GPBFileSyntax syntax) {
|
| GPBOneofDescriptor *oneof = field->containingOneof_;
|
| if (oneof) {
|
| - GPBMaybeClearOneof(self, oneof, GPBFieldNumber(field));
|
| + GPBMessageFieldDescription *fieldDesc = field->description_;
|
| + GPBMaybeClearOneof(self, oneof, fieldDesc->hasIndex, fieldDesc->number);
|
| }
|
| NSCAssert(self->messageStorage_ != NULL,
|
| @"%@: All messages should have storage (from init)",
|
| @@ -601,7 +603,8 @@ void GPBSetUInt32IvarWithFieldInternal(GPBMessage *self,
|
| GPBFileSyntax syntax) {
|
| GPBOneofDescriptor *oneof = field->containingOneof_;
|
| if (oneof) {
|
| - GPBMaybeClearOneof(self, oneof, GPBFieldNumber(field));
|
| + GPBMessageFieldDescription *fieldDesc = field->description_;
|
| + GPBMaybeClearOneof(self, oneof, fieldDesc->hasIndex, fieldDesc->number);
|
| }
|
| NSCAssert(self->messageStorage_ != NULL,
|
| @"%@: All messages should have storage (from init)",
|
| @@ -649,7 +652,8 @@ void GPBSetInt64IvarWithFieldInternal(GPBMessage *self,
|
| GPBFileSyntax syntax) {
|
| GPBOneofDescriptor *oneof = field->containingOneof_;
|
| if (oneof) {
|
| - GPBMaybeClearOneof(self, oneof, GPBFieldNumber(field));
|
| + GPBMessageFieldDescription *fieldDesc = field->description_;
|
| + GPBMaybeClearOneof(self, oneof, fieldDesc->hasIndex, fieldDesc->number);
|
| }
|
| NSCAssert(self->messageStorage_ != NULL,
|
| @"%@: All messages should have storage (from init)",
|
| @@ -697,7 +701,8 @@ void GPBSetUInt64IvarWithFieldInternal(GPBMessage *self,
|
| GPBFileSyntax syntax) {
|
| GPBOneofDescriptor *oneof = field->containingOneof_;
|
| if (oneof) {
|
| - GPBMaybeClearOneof(self, oneof, GPBFieldNumber(field));
|
| + GPBMessageFieldDescription *fieldDesc = field->description_;
|
| + GPBMaybeClearOneof(self, oneof, fieldDesc->hasIndex, fieldDesc->number);
|
| }
|
| NSCAssert(self->messageStorage_ != NULL,
|
| @"%@: All messages should have storage (from init)",
|
| @@ -745,7 +750,8 @@ void GPBSetFloatIvarWithFieldInternal(GPBMessage *self,
|
| GPBFileSyntax syntax) {
|
| GPBOneofDescriptor *oneof = field->containingOneof_;
|
| if (oneof) {
|
| - GPBMaybeClearOneof(self, oneof, GPBFieldNumber(field));
|
| + GPBMessageFieldDescription *fieldDesc = field->description_;
|
| + GPBMaybeClearOneof(self, oneof, fieldDesc->hasIndex, fieldDesc->number);
|
| }
|
| NSCAssert(self->messageStorage_ != NULL,
|
| @"%@: All messages should have storage (from init)",
|
| @@ -793,7 +799,8 @@ void GPBSetDoubleIvarWithFieldInternal(GPBMessage *self,
|
| GPBFileSyntax syntax) {
|
| GPBOneofDescriptor *oneof = field->containingOneof_;
|
| if (oneof) {
|
| - GPBMaybeClearOneof(self, oneof, GPBFieldNumber(field));
|
| + GPBMessageFieldDescription *fieldDesc = field->description_;
|
| + GPBMaybeClearOneof(self, oneof, fieldDesc->hasIndex, fieldDesc->number);
|
| }
|
| NSCAssert(self->messageStorage_ != NULL,
|
| @"%@: All messages should have storage (from init)",
|
| @@ -812,7 +819,7 @@ void GPBSetDoubleIvarWithFieldInternal(GPBMessage *self,
|
| GPBBecomeVisibleToAutocreator(self);
|
| }
|
|
|
| -//%PDDM-EXPAND-END (7 expansions)
|
| +//%PDDM-EXPAND-END (6 expansions)
|
|
|
| // Aliases are function calls that are virtually the same.
|
|
|
| @@ -1253,7 +1260,7 @@ static void AppendTextFormatForMessageField(GPBMessage *message,
|
| if ([fieldName length] == 0) {
|
| fieldName = [NSString stringWithFormat:@"%u", GPBFieldNumber(field)];
|
| // If there is only one entry, put the objc name as a comment, other wise
|
| - // add it before the the repeated values.
|
| + // add it before the repeated values.
|
| if (count > 1) {
|
| [toStr appendFormat:@"%@# %@\n", lineIndent, field.name];
|
| } else {
|
|
|