OLD | NEW |
1 // Protocol Buffers - Google's data interchange format | 1 // Protocol Buffers - Google's data interchange format |
2 // Copyright 2008 Google Inc. All rights reserved. | 2 // Copyright 2008 Google Inc. All rights reserved. |
3 // https://developers.google.com/protocol-buffers/ | 3 // https://developers.google.com/protocol-buffers/ |
4 // | 4 // |
5 // Redistribution and use in source and binary forms, with or without | 5 // Redistribution and use in source and binary forms, with or without |
6 // modification, are permitted provided that the following conditions are | 6 // modification, are permitted provided that the following conditions are |
7 // met: | 7 // met: |
8 // | 8 // |
9 // * Redistributions of source code must retain the above copyright | 9 // * Redistributions of source code must retain the above copyright |
10 // notice, this list of conditions and the following disclaimer. | 10 // notice, this list of conditions and the following disclaimer. |
(...skipping 27 matching lines...) Expand all Loading... |
38 #import "GPBMessage_PackagePrivate.h" | 38 #import "GPBMessage_PackagePrivate.h" |
39 #import "GPBUtilities_PackagePrivate.h" | 39 #import "GPBUtilities_PackagePrivate.h" |
40 | 40 |
41 static id NewSingleValueFromInputStream(GPBExtensionDescriptor *extension, | 41 static id NewSingleValueFromInputStream(GPBExtensionDescriptor *extension, |
42 GPBCodedInputStream *input, | 42 GPBCodedInputStream *input, |
43 GPBExtensionRegistry *extensionRegistry, | 43 GPBExtensionRegistry *extensionRegistry, |
44 GPBMessage *existingValue) | 44 GPBMessage *existingValue) |
45 __attribute__((ns_returns_retained)); | 45 __attribute__((ns_returns_retained)); |
46 | 46 |
47 GPB_INLINE size_t DataTypeSize(GPBDataType dataType) { | 47 GPB_INLINE size_t DataTypeSize(GPBDataType dataType) { |
| 48 #pragma clang diagnostic push |
| 49 #pragma clang diagnostic ignored "-Wswitch-enum" |
48 switch (dataType) { | 50 switch (dataType) { |
49 case GPBDataTypeBool: | 51 case GPBDataTypeBool: |
50 return 1; | 52 return 1; |
51 case GPBDataTypeFixed32: | 53 case GPBDataTypeFixed32: |
52 case GPBDataTypeSFixed32: | 54 case GPBDataTypeSFixed32: |
53 case GPBDataTypeFloat: | 55 case GPBDataTypeFloat: |
54 return 4; | 56 return 4; |
55 case GPBDataTypeFixed64: | 57 case GPBDataTypeFixed64: |
56 case GPBDataTypeSFixed64: | 58 case GPBDataTypeSFixed64: |
57 case GPBDataTypeDouble: | 59 case GPBDataTypeDouble: |
58 return 8; | 60 return 8; |
59 default: | 61 default: |
60 return 0; | 62 return 0; |
61 } | 63 } |
| 64 #pragma clang diagnostic pop |
62 } | 65 } |
63 | 66 |
64 static size_t ComputePBSerializedSizeNoTagOfObject(GPBDataType dataType, id obje
ct) { | 67 static size_t ComputePBSerializedSizeNoTagOfObject(GPBDataType dataType, id obje
ct) { |
65 #define FIELD_CASE(TYPE, ACCESSOR) \ | 68 #define FIELD_CASE(TYPE, ACCESSOR) \ |
66 case GPBDataType##TYPE: \ | 69 case GPBDataType##TYPE: \ |
67 return GPBCompute##TYPE##SizeNoTag([(NSNumber *)object ACCESSOR]); | 70 return GPBCompute##TYPE##SizeNoTag([(NSNumber *)object ACCESSOR]); |
68 #define FIELD_CASE2(TYPE) \ | 71 #define FIELD_CASE2(TYPE) \ |
69 case GPBDataType##TYPE: \ | 72 case GPBDataType##TYPE: \ |
70 return GPBCompute##TYPE##SizeNoTag(object); | 73 return GPBCompute##TYPE##SizeNoTag(object); |
71 switch (dataType) { | 74 switch (dataType) { |
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
254 for (id value in values) { | 257 for (id value in values) { |
255 WriteObjectNoTagToCodedOutputStream(value, description, output); | 258 WriteObjectNoTagToCodedOutputStream(value, description, output); |
256 } | 259 } |
257 } else { | 260 } else { |
258 for (id value in values) { | 261 for (id value in values) { |
259 WriteObjectIncludingTagToCodedOutputStream(value, description, output); | 262 WriteObjectIncludingTagToCodedOutputStream(value, description, output); |
260 } | 263 } |
261 } | 264 } |
262 } | 265 } |
263 | 266 |
| 267 // Direct access is use for speed, to avoid even internally declaring things |
| 268 // read/write, etc. The warning is enabled in the project to ensure code calling |
| 269 // protos can turn on -Wdirect-ivar-access without issues. |
| 270 #pragma clang diagnostic push |
| 271 #pragma clang diagnostic ignored "-Wdirect-ivar-access" |
| 272 |
264 void GPBExtensionMergeFromInputStream(GPBExtensionDescriptor *extension, | 273 void GPBExtensionMergeFromInputStream(GPBExtensionDescriptor *extension, |
265 BOOL isPackedOnStream, | 274 BOOL isPackedOnStream, |
266 GPBCodedInputStream *input, | 275 GPBCodedInputStream *input, |
267 GPBExtensionRegistry *extensionRegistry, | 276 GPBExtensionRegistry *extensionRegistry, |
268 GPBMessage *message) { | 277 GPBMessage *message) { |
269 GPBExtensionDescription *description = extension->description_; | 278 GPBExtensionDescription *description = extension->description_; |
270 GPBCodedInputStreamState *state = &input->state_; | 279 GPBCodedInputStreamState *state = &input->state_; |
271 if (isPackedOnStream) { | 280 if (isPackedOnStream) { |
272 NSCAssert(GPBExtensionIsRepeated(description), | 281 NSCAssert(GPBExtensionIsRepeated(description), |
273 @"How was it packed if it isn't repeated?"); | 282 @"How was it packed if it isn't repeated?"); |
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
371 [input readMessage:message extensionRegistry:extensionRegistry]; | 380 [input readMessage:message extensionRegistry:extensionRegistry]; |
372 } | 381 } |
373 } | 382 } |
374 | 383 |
375 return message; | 384 return message; |
376 } | 385 } |
377 } | 386 } |
378 | 387 |
379 return nil; | 388 return nil; |
380 } | 389 } |
| 390 |
| 391 #pragma clang diagnostic pop |
OLD | NEW |