google-protobuf 3.17.3-x86-linux → 3.18.0.rc.1-x86-linux

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of google-protobuf might be problematic. Click here for more details.

@@ -636,6 +636,48 @@ void upb_msg_addunknown(upb_msg *msg, const char *data, size_t len,
636
636
  /* Returns a reference to the message's unknown data. */
637
637
  const char *upb_msg_getunknown(const upb_msg *msg, size_t *len);
638
638
 
639
+ /** upb_extreg *******************************************************************/
640
+
641
+ /* Extension registry: a dynamic data structure that stores a map of:
642
+ * (upb_msglayout, number) -> extension info
643
+ *
644
+ * upb_decode() uses upb_extreg to look up extensions while parsing binary
645
+ * format.
646
+ *
647
+ * upb_extreg is part of the mini-table (msglayout) family of objects. Like all
648
+ * mini-table objects, it is suitable for reflection-less builds that do not
649
+ * want to expose names into the binary.
650
+ *
651
+ * Unlike most mini-table types, upb_extreg requires dynamic memory allocation
652
+ * and dynamic initialization:
653
+ * * If reflection is being used, then upb_symtab will construct an appropriate
654
+ * upb_extreg automatically.
655
+ * * For a mini-table only build, the user must manually construct the
656
+ * upb_extreg and populate it with all of the extensions the user cares about.
657
+ * * A third alternative is to manually unpack relevant extensions after the
658
+ * main parse is complete, similar to how Any works. This is perhaps the
659
+ * nicest solution from the perspective of reducing dependencies, avoiding
660
+ * dynamic memory allocation, and avoiding the need to parse uninteresting
661
+ * extensions. The downsides are:
662
+ * (1) parse errors are not caught during the main parse
663
+ * (2) the CPU hit of parsing comes during access, which could cause an
664
+ * undesirable stutter in application performance.
665
+ *
666
+ * Users cannot directly get or put into this map. Users can only add the
667
+ * extensions from a generated module and pass the extension registry to the
668
+ * binary decoder.
669
+ *
670
+ * A upb_symtab provides a upb_extreg, so any users who use reflection do not
671
+ * need to populate a upb_extreg directly.
672
+ */
673
+
674
+ struct upb_extreg;
675
+ typedef struct upb_extreg upb_extreg;
676
+
677
+ /* Creates a upb_extreg in the given arena. The arena must outlive any use of
678
+ * the extreg. */
679
+ upb_extreg *upb_extreg_new(upb_arena *arena);
680
+
639
681
  #ifdef __cplusplus
640
682
  } /* extern "C" */
641
683
  #endif
@@ -657,12 +699,13 @@ enum {
657
699
  #define UPB_DECODE_MAXDEPTH(depth) ((depth) << 16)
658
700
 
659
701
  bool _upb_decode(const char *buf, size_t size, upb_msg *msg,
660
- const upb_msglayout *l, upb_arena *arena, int options);
702
+ const upb_msglayout *l, const upb_extreg *extreg, int options,
703
+ upb_arena *arena);
661
704
 
662
705
  UPB_INLINE
663
706
  bool upb_decode(const char *buf, size_t size, upb_msg *msg,
664
707
  const upb_msglayout *l, upb_arena *arena) {
665
- return _upb_decode(buf, size, msg, l, arena, 0);
708
+ return _upb_decode(buf, size, msg, l, NULL, 0, arena);
666
709
  }
667
710
 
668
711
  #ifdef __cplusplus
@@ -836,6 +879,10 @@ typedef struct upb_tabval {
836
879
 
837
880
  /* upb_table ******************************************************************/
838
881
 
882
+ uint64_t Wyhash(const void *data, size_t len, uint64_t seed,
883
+ const uint64_t salt[]);
884
+ extern const uint64_t kWyhashSalt[5];
885
+
839
886
  typedef struct _upb_tabent {
840
887
  upb_tabkey key;
841
888
  upb_tabval val;
@@ -1047,9 +1094,34 @@ typedef struct {
1047
1094
  int16_t presence; /* If >0, hasbit_index. If <0, ~oneof_index. */
1048
1095
  uint16_t submsg_index; /* undefined if descriptortype != MESSAGE or GROUP. */
1049
1096
  uint8_t descriptortype;
1050
- uint8_t label; /* google.protobuf.Label or _UPB_LABEL_* above. */
1097
+ int8_t mode; /* upb_fieldmode, with flags from upb_labelflags */
1051
1098
  } upb_msglayout_field;
1052
1099
 
1100
+ typedef enum {
1101
+ _UPB_MODE_MAP = 0,
1102
+ _UPB_MODE_ARRAY = 1,
1103
+ _UPB_MODE_SCALAR = 2,
1104
+ } upb_fieldmode;
1105
+
1106
+ /* Extra flags on the mode field. */
1107
+ enum upb_labelflags {
1108
+ _UPB_MODE_IS_PACKED = 4,
1109
+ };
1110
+
1111
+ UPB_INLINE upb_fieldmode _upb_getmode(const upb_msglayout_field *field) {
1112
+ return (upb_fieldmode)(field->mode & 3);
1113
+ }
1114
+
1115
+ UPB_INLINE bool _upb_repeated_or_map(const upb_msglayout_field *field) {
1116
+ /* This works because upb_fieldmode has no value 3. */
1117
+ return !(field->mode & _UPB_MODE_SCALAR);
1118
+ }
1119
+
1120
+ UPB_INLINE bool _upb_issubmsg(const upb_msglayout_field *field) {
1121
+ return field->descriptortype == UPB_DTYPE_MESSAGE ||
1122
+ field->descriptortype == UPB_DTYPE_GROUP;
1123
+ }
1124
+
1053
1125
  struct upb_decstate;
1054
1126
  struct upb_msglayout;
1055
1127
 
@@ -1070,27 +1142,65 @@ struct upb_msglayout {
1070
1142
  uint16_t size;
1071
1143
  uint16_t field_count;
1072
1144
  bool extendable;
1145
+ uint8_t dense_below;
1073
1146
  uint8_t table_mask;
1074
1147
  /* To constant-initialize the tables of variable length, we need a flexible
1075
1148
  * array member, and we need to compile in C99 mode. */
1076
1149
  _upb_fasttable_entry fasttable[];
1077
1150
  };
1078
1151
 
1152
+ typedef struct {
1153
+ upb_msglayout_field field;
1154
+ const upb_msglayout *extendee;
1155
+ const upb_msglayout *submsg; /* NULL for non-submessage fields. */
1156
+ } upb_msglayout_ext;
1157
+
1158
+ /** upb_extreg ****************************************************************/
1159
+
1160
+ /* Adds the given extension info for message type |l| and field number |num|
1161
+ * into the registry. Returns false if this message type and field number were
1162
+ * already in the map, or if memory allocation fails. */
1163
+ bool _upb_extreg_add(upb_extreg *r, const upb_msglayout_ext *e, size_t count);
1164
+
1165
+ /* Looks up the extension (if any) defined for message type |l| and field
1166
+ * number |num|. If an extension was found, copies the field info into |*ext|
1167
+ * and returns true. Otherwise returns false. */
1168
+ const upb_msglayout_field *_upb_extreg_get(const upb_extreg *r,
1169
+ const upb_msglayout *l,
1170
+ uint32_t num);
1171
+
1079
1172
  /** upb_msg *******************************************************************/
1080
1173
 
1081
- /* Internal members of a upb_msg. We can change this without breaking binary
1082
- * compatibility. We put these before the user's data. The user's upb_msg*
1083
- * points after the upb_msg_internal. */
1174
+ /* Internal members of a upb_msg that track unknown fields and/or extensions.
1175
+ * We can change this without breaking binary compatibility. We put these
1176
+ * before the user's data. The user's upb_msg* points after the
1177
+ * upb_msg_internal. */
1084
1178
 
1085
1179
  typedef struct {
1086
- uint32_t len;
1180
+ /* Total size of this structure, including the data that follows.
1181
+ * Must be aligned to 8, which is alignof(upb_msg_ext) */
1087
1182
  uint32_t size;
1088
- /* Data follows. */
1089
- } upb_msg_unknowndata;
1090
1183
 
1091
- /* Used when a message is not extendable. */
1184
+ /* Offsets relative to the beginning of this structure.
1185
+ *
1186
+ * Unknown data grows forward from the beginning to unknown_end.
1187
+ * Extension data grows backward from size to ext_begin.
1188
+ * When the two meet, we're out of data and have to realloc.
1189
+ *
1190
+ * If we imagine that the final member of this struct is:
1191
+ * char data[size - overhead]; // overhead = sizeof(upb_msg_internaldata)
1192
+ *
1193
+ * Then we have:
1194
+ * unknown data: data[0 .. (unknown_end - overhead)]
1195
+ * extensions data: data[(ext_begin - overhead) .. (size - overhead)] */
1196
+ uint32_t unknown_end;
1197
+ uint32_t ext_begin;
1198
+ /* Data follows, as if there were an array:
1199
+ * char data[size - sizeof(upb_msg_internaldata)]; */
1200
+ } upb_msg_internaldata;
1201
+
1092
1202
  typedef struct {
1093
- upb_msg_unknowndata *unknown;
1203
+ upb_msg_internaldata *internal;
1094
1204
  } upb_msg_internal;
1095
1205
 
1096
1206
  /* Maps upb_fieldtype_t -> memory size. */
@@ -1129,6 +1239,35 @@ void _upb_msg_discardunknown_shallow(upb_msg *msg);
1129
1239
  bool _upb_msg_addunknown(upb_msg *msg, const char *data, size_t len,
1130
1240
  upb_arena *arena);
1131
1241
 
1242
+ /** upb_msg_ext ***************************************************************/
1243
+
1244
+ /* The internal representation of an extension is self-describing: it contains
1245
+ * enough information that we can serialize it to binary format without needing
1246
+ * to look it up in a registry. */
1247
+ typedef struct {
1248
+ const upb_msglayout_ext *ext;
1249
+ union {
1250
+ upb_strview str;
1251
+ void *ptr;
1252
+ double dbl;
1253
+ char scalar_data[8];
1254
+ } data;
1255
+ } upb_msg_ext;
1256
+
1257
+ /* Adds the given extension data to the given message. The returned extension will
1258
+ * have its "ext" member initialized according to |ext|. */
1259
+ upb_msg_ext *_upb_msg_getorcreateext(upb_msg *msg, const upb_msglayout_ext *ext,
1260
+ upb_arena *arena);
1261
+
1262
+ /* Returns an array of extensions for this message. Note: the array is
1263
+ * ordered in reverse relative to the order of creation. */
1264
+ const upb_msg_ext *_upb_msg_getexts(const upb_msg *msg, size_t *count);
1265
+
1266
+ /* Returns an extension for the given field number, or NULL if no extension
1267
+ * exists for this field number. */
1268
+ const upb_msg_ext *_upb_msg_getext(const upb_msg *msg,
1269
+ const upb_msglayout_ext *ext);
1270
+
1132
1271
  /** Hasbit access *************************************************************/
1133
1272
 
1134
1273
  UPB_INLINE bool _upb_hasbit(const upb_msg *msg, size_t idx) {
@@ -1192,14 +1331,6 @@ UPB_INLINE bool _upb_has_submsg_nohasbit(const upb_msg *msg, size_t ofs) {
1192
1331
  return *UPB_PTR_AT(msg, ofs, const upb_msg*) != NULL;
1193
1332
  }
1194
1333
 
1195
- UPB_INLINE bool _upb_isrepeated(const upb_msglayout_field *field) {
1196
- return (field->label & 3) == UPB_LABEL_REPEATED;
1197
- }
1198
-
1199
- UPB_INLINE bool _upb_repeated_or_map(const upb_msglayout_field *field) {
1200
- return field->label >= UPB_LABEL_REPEATED;
1201
- }
1202
-
1203
1334
  /** upb_array *****************************************************************/
1204
1335
 
1205
1336
  /* Our internal representation for repeated fields. */
@@ -2121,13 +2252,19 @@ UPB_INLINE google_protobuf_FileDescriptorSet *google_protobuf_FileDescriptorSet_
2121
2252
  UPB_INLINE google_protobuf_FileDescriptorSet *google_protobuf_FileDescriptorSet_parse(const char *buf, size_t size,
2122
2253
  upb_arena *arena) {
2123
2254
  google_protobuf_FileDescriptorSet *ret = google_protobuf_FileDescriptorSet_new(arena);
2124
- return (ret && upb_decode(buf, size, ret, &google_protobuf_FileDescriptorSet_msginit, arena)) ? ret : NULL;
2255
+ if (!ret) return NULL;
2256
+ if (!upb_decode(buf, size, ret, &google_protobuf_FileDescriptorSet_msginit, arena)) return NULL;
2257
+ return ret;
2125
2258
  }
2126
2259
  UPB_INLINE google_protobuf_FileDescriptorSet *google_protobuf_FileDescriptorSet_parse_ex(const char *buf, size_t size,
2127
- upb_arena *arena, int options) {
2260
+ const upb_extreg *extreg, int options,
2261
+ upb_arena *arena) {
2128
2262
  google_protobuf_FileDescriptorSet *ret = google_protobuf_FileDescriptorSet_new(arena);
2129
- return (ret && _upb_decode(buf, size, ret, &google_protobuf_FileDescriptorSet_msginit, arena, options))
2130
- ? ret : NULL;
2263
+ if (!ret) return NULL;
2264
+ if (!_upb_decode(buf, size, ret, &google_protobuf_FileDescriptorSet_msginit, extreg, options, arena)) {
2265
+ return NULL;
2266
+ }
2267
+ return ret;
2131
2268
  }
2132
2269
  UPB_INLINE char *google_protobuf_FileDescriptorSet_serialize(const google_protobuf_FileDescriptorSet *msg, upb_arena *arena, size_t *len) {
2133
2270
  return upb_encode(msg, &google_protobuf_FileDescriptorSet_msginit, arena, len);
@@ -2158,13 +2295,19 @@ UPB_INLINE google_protobuf_FileDescriptorProto *google_protobuf_FileDescriptorPr
2158
2295
  UPB_INLINE google_protobuf_FileDescriptorProto *google_protobuf_FileDescriptorProto_parse(const char *buf, size_t size,
2159
2296
  upb_arena *arena) {
2160
2297
  google_protobuf_FileDescriptorProto *ret = google_protobuf_FileDescriptorProto_new(arena);
2161
- return (ret && upb_decode(buf, size, ret, &google_protobuf_FileDescriptorProto_msginit, arena)) ? ret : NULL;
2298
+ if (!ret) return NULL;
2299
+ if (!upb_decode(buf, size, ret, &google_protobuf_FileDescriptorProto_msginit, arena)) return NULL;
2300
+ return ret;
2162
2301
  }
2163
2302
  UPB_INLINE google_protobuf_FileDescriptorProto *google_protobuf_FileDescriptorProto_parse_ex(const char *buf, size_t size,
2164
- upb_arena *arena, int options) {
2303
+ const upb_extreg *extreg, int options,
2304
+ upb_arena *arena) {
2165
2305
  google_protobuf_FileDescriptorProto *ret = google_protobuf_FileDescriptorProto_new(arena);
2166
- return (ret && _upb_decode(buf, size, ret, &google_protobuf_FileDescriptorProto_msginit, arena, options))
2167
- ? ret : NULL;
2306
+ if (!ret) return NULL;
2307
+ if (!_upb_decode(buf, size, ret, &google_protobuf_FileDescriptorProto_msginit, extreg, options, arena)) {
2308
+ return NULL;
2309
+ }
2310
+ return ret;
2168
2311
  }
2169
2312
  UPB_INLINE char *google_protobuf_FileDescriptorProto_serialize(const google_protobuf_FileDescriptorProto *msg, upb_arena *arena, size_t *len) {
2170
2313
  return upb_encode(msg, &google_protobuf_FileDescriptorProto_msginit, arena, len);
@@ -2321,13 +2464,19 @@ UPB_INLINE google_protobuf_DescriptorProto *google_protobuf_DescriptorProto_new(
2321
2464
  UPB_INLINE google_protobuf_DescriptorProto *google_protobuf_DescriptorProto_parse(const char *buf, size_t size,
2322
2465
  upb_arena *arena) {
2323
2466
  google_protobuf_DescriptorProto *ret = google_protobuf_DescriptorProto_new(arena);
2324
- return (ret && upb_decode(buf, size, ret, &google_protobuf_DescriptorProto_msginit, arena)) ? ret : NULL;
2467
+ if (!ret) return NULL;
2468
+ if (!upb_decode(buf, size, ret, &google_protobuf_DescriptorProto_msginit, arena)) return NULL;
2469
+ return ret;
2325
2470
  }
2326
2471
  UPB_INLINE google_protobuf_DescriptorProto *google_protobuf_DescriptorProto_parse_ex(const char *buf, size_t size,
2327
- upb_arena *arena, int options) {
2472
+ const upb_extreg *extreg, int options,
2473
+ upb_arena *arena) {
2328
2474
  google_protobuf_DescriptorProto *ret = google_protobuf_DescriptorProto_new(arena);
2329
- return (ret && _upb_decode(buf, size, ret, &google_protobuf_DescriptorProto_msginit, arena, options))
2330
- ? ret : NULL;
2475
+ if (!ret) return NULL;
2476
+ if (!_upb_decode(buf, size, ret, &google_protobuf_DescriptorProto_msginit, extreg, options, arena)) {
2477
+ return NULL;
2478
+ }
2479
+ return ret;
2331
2480
  }
2332
2481
  UPB_INLINE char *google_protobuf_DescriptorProto_serialize(const google_protobuf_DescriptorProto *msg, upb_arena *arena, size_t *len) {
2333
2482
  return upb_encode(msg, &google_protobuf_DescriptorProto_msginit, arena, len);
@@ -2480,13 +2629,19 @@ UPB_INLINE google_protobuf_DescriptorProto_ExtensionRange *google_protobuf_Descr
2480
2629
  UPB_INLINE google_protobuf_DescriptorProto_ExtensionRange *google_protobuf_DescriptorProto_ExtensionRange_parse(const char *buf, size_t size,
2481
2630
  upb_arena *arena) {
2482
2631
  google_protobuf_DescriptorProto_ExtensionRange *ret = google_protobuf_DescriptorProto_ExtensionRange_new(arena);
2483
- return (ret && upb_decode(buf, size, ret, &google_protobuf_DescriptorProto_ExtensionRange_msginit, arena)) ? ret : NULL;
2632
+ if (!ret) return NULL;
2633
+ if (!upb_decode(buf, size, ret, &google_protobuf_DescriptorProto_ExtensionRange_msginit, arena)) return NULL;
2634
+ return ret;
2484
2635
  }
2485
2636
  UPB_INLINE google_protobuf_DescriptorProto_ExtensionRange *google_protobuf_DescriptorProto_ExtensionRange_parse_ex(const char *buf, size_t size,
2486
- upb_arena *arena, int options) {
2637
+ const upb_extreg *extreg, int options,
2638
+ upb_arena *arena) {
2487
2639
  google_protobuf_DescriptorProto_ExtensionRange *ret = google_protobuf_DescriptorProto_ExtensionRange_new(arena);
2488
- return (ret && _upb_decode(buf, size, ret, &google_protobuf_DescriptorProto_ExtensionRange_msginit, arena, options))
2489
- ? ret : NULL;
2640
+ if (!ret) return NULL;
2641
+ if (!_upb_decode(buf, size, ret, &google_protobuf_DescriptorProto_ExtensionRange_msginit, extreg, options, arena)) {
2642
+ return NULL;
2643
+ }
2644
+ return ret;
2490
2645
  }
2491
2646
  UPB_INLINE char *google_protobuf_DescriptorProto_ExtensionRange_serialize(const google_protobuf_DescriptorProto_ExtensionRange *msg, upb_arena *arena, size_t *len) {
2492
2647
  return upb_encode(msg, &google_protobuf_DescriptorProto_ExtensionRange_msginit, arena, len);
@@ -2529,13 +2684,19 @@ UPB_INLINE google_protobuf_DescriptorProto_ReservedRange *google_protobuf_Descri
2529
2684
  UPB_INLINE google_protobuf_DescriptorProto_ReservedRange *google_protobuf_DescriptorProto_ReservedRange_parse(const char *buf, size_t size,
2530
2685
  upb_arena *arena) {
2531
2686
  google_protobuf_DescriptorProto_ReservedRange *ret = google_protobuf_DescriptorProto_ReservedRange_new(arena);
2532
- return (ret && upb_decode(buf, size, ret, &google_protobuf_DescriptorProto_ReservedRange_msginit, arena)) ? ret : NULL;
2687
+ if (!ret) return NULL;
2688
+ if (!upb_decode(buf, size, ret, &google_protobuf_DescriptorProto_ReservedRange_msginit, arena)) return NULL;
2689
+ return ret;
2533
2690
  }
2534
2691
  UPB_INLINE google_protobuf_DescriptorProto_ReservedRange *google_protobuf_DescriptorProto_ReservedRange_parse_ex(const char *buf, size_t size,
2535
- upb_arena *arena, int options) {
2692
+ const upb_extreg *extreg, int options,
2693
+ upb_arena *arena) {
2536
2694
  google_protobuf_DescriptorProto_ReservedRange *ret = google_protobuf_DescriptorProto_ReservedRange_new(arena);
2537
- return (ret && _upb_decode(buf, size, ret, &google_protobuf_DescriptorProto_ReservedRange_msginit, arena, options))
2538
- ? ret : NULL;
2695
+ if (!ret) return NULL;
2696
+ if (!_upb_decode(buf, size, ret, &google_protobuf_DescriptorProto_ReservedRange_msginit, extreg, options, arena)) {
2697
+ return NULL;
2698
+ }
2699
+ return ret;
2539
2700
  }
2540
2701
  UPB_INLINE char *google_protobuf_DescriptorProto_ReservedRange_serialize(const google_protobuf_DescriptorProto_ReservedRange *msg, upb_arena *arena, size_t *len) {
2541
2702
  return upb_encode(msg, &google_protobuf_DescriptorProto_ReservedRange_msginit, arena, len);
@@ -2563,13 +2724,19 @@ UPB_INLINE google_protobuf_ExtensionRangeOptions *google_protobuf_ExtensionRange
2563
2724
  UPB_INLINE google_protobuf_ExtensionRangeOptions *google_protobuf_ExtensionRangeOptions_parse(const char *buf, size_t size,
2564
2725
  upb_arena *arena) {
2565
2726
  google_protobuf_ExtensionRangeOptions *ret = google_protobuf_ExtensionRangeOptions_new(arena);
2566
- return (ret && upb_decode(buf, size, ret, &google_protobuf_ExtensionRangeOptions_msginit, arena)) ? ret : NULL;
2727
+ if (!ret) return NULL;
2728
+ if (!upb_decode(buf, size, ret, &google_protobuf_ExtensionRangeOptions_msginit, arena)) return NULL;
2729
+ return ret;
2567
2730
  }
2568
2731
  UPB_INLINE google_protobuf_ExtensionRangeOptions *google_protobuf_ExtensionRangeOptions_parse_ex(const char *buf, size_t size,
2569
- upb_arena *arena, int options) {
2732
+ const upb_extreg *extreg, int options,
2733
+ upb_arena *arena) {
2570
2734
  google_protobuf_ExtensionRangeOptions *ret = google_protobuf_ExtensionRangeOptions_new(arena);
2571
- return (ret && _upb_decode(buf, size, ret, &google_protobuf_ExtensionRangeOptions_msginit, arena, options))
2572
- ? ret : NULL;
2735
+ if (!ret) return NULL;
2736
+ if (!_upb_decode(buf, size, ret, &google_protobuf_ExtensionRangeOptions_msginit, extreg, options, arena)) {
2737
+ return NULL;
2738
+ }
2739
+ return ret;
2573
2740
  }
2574
2741
  UPB_INLINE char *google_protobuf_ExtensionRangeOptions_serialize(const google_protobuf_ExtensionRangeOptions *msg, upb_arena *arena, size_t *len) {
2575
2742
  return upb_encode(msg, &google_protobuf_ExtensionRangeOptions_msginit, arena, len);
@@ -2600,13 +2767,19 @@ UPB_INLINE google_protobuf_FieldDescriptorProto *google_protobuf_FieldDescriptor
2600
2767
  UPB_INLINE google_protobuf_FieldDescriptorProto *google_protobuf_FieldDescriptorProto_parse(const char *buf, size_t size,
2601
2768
  upb_arena *arena) {
2602
2769
  google_protobuf_FieldDescriptorProto *ret = google_protobuf_FieldDescriptorProto_new(arena);
2603
- return (ret && upb_decode(buf, size, ret, &google_protobuf_FieldDescriptorProto_msginit, arena)) ? ret : NULL;
2770
+ if (!ret) return NULL;
2771
+ if (!upb_decode(buf, size, ret, &google_protobuf_FieldDescriptorProto_msginit, arena)) return NULL;
2772
+ return ret;
2604
2773
  }
2605
2774
  UPB_INLINE google_protobuf_FieldDescriptorProto *google_protobuf_FieldDescriptorProto_parse_ex(const char *buf, size_t size,
2606
- upb_arena *arena, int options) {
2775
+ const upb_extreg *extreg, int options,
2776
+ upb_arena *arena) {
2607
2777
  google_protobuf_FieldDescriptorProto *ret = google_protobuf_FieldDescriptorProto_new(arena);
2608
- return (ret && _upb_decode(buf, size, ret, &google_protobuf_FieldDescriptorProto_msginit, arena, options))
2609
- ? ret : NULL;
2778
+ if (!ret) return NULL;
2779
+ if (!_upb_decode(buf, size, ret, &google_protobuf_FieldDescriptorProto_msginit, extreg, options, arena)) {
2780
+ return NULL;
2781
+ }
2782
+ return ret;
2610
2783
  }
2611
2784
  UPB_INLINE char *google_protobuf_FieldDescriptorProto_serialize(const google_protobuf_FieldDescriptorProto *msg, upb_arena *arena, size_t *len) {
2612
2785
  return upb_encode(msg, &google_protobuf_FieldDescriptorProto_msginit, arena, len);
@@ -2697,13 +2870,19 @@ UPB_INLINE google_protobuf_OneofDescriptorProto *google_protobuf_OneofDescriptor
2697
2870
  UPB_INLINE google_protobuf_OneofDescriptorProto *google_protobuf_OneofDescriptorProto_parse(const char *buf, size_t size,
2698
2871
  upb_arena *arena) {
2699
2872
  google_protobuf_OneofDescriptorProto *ret = google_protobuf_OneofDescriptorProto_new(arena);
2700
- return (ret && upb_decode(buf, size, ret, &google_protobuf_OneofDescriptorProto_msginit, arena)) ? ret : NULL;
2873
+ if (!ret) return NULL;
2874
+ if (!upb_decode(buf, size, ret, &google_protobuf_OneofDescriptorProto_msginit, arena)) return NULL;
2875
+ return ret;
2701
2876
  }
2702
2877
  UPB_INLINE google_protobuf_OneofDescriptorProto *google_protobuf_OneofDescriptorProto_parse_ex(const char *buf, size_t size,
2703
- upb_arena *arena, int options) {
2878
+ const upb_extreg *extreg, int options,
2879
+ upb_arena *arena) {
2704
2880
  google_protobuf_OneofDescriptorProto *ret = google_protobuf_OneofDescriptorProto_new(arena);
2705
- return (ret && _upb_decode(buf, size, ret, &google_protobuf_OneofDescriptorProto_msginit, arena, options))
2706
- ? ret : NULL;
2881
+ if (!ret) return NULL;
2882
+ if (!_upb_decode(buf, size, ret, &google_protobuf_OneofDescriptorProto_msginit, extreg, options, arena)) {
2883
+ return NULL;
2884
+ }
2885
+ return ret;
2707
2886
  }
2708
2887
  UPB_INLINE char *google_protobuf_OneofDescriptorProto_serialize(const google_protobuf_OneofDescriptorProto *msg, upb_arena *arena, size_t *len) {
2709
2888
  return upb_encode(msg, &google_protobuf_OneofDescriptorProto_msginit, arena, len);
@@ -2740,13 +2919,19 @@ UPB_INLINE google_protobuf_EnumDescriptorProto *google_protobuf_EnumDescriptorPr
2740
2919
  UPB_INLINE google_protobuf_EnumDescriptorProto *google_protobuf_EnumDescriptorProto_parse(const char *buf, size_t size,
2741
2920
  upb_arena *arena) {
2742
2921
  google_protobuf_EnumDescriptorProto *ret = google_protobuf_EnumDescriptorProto_new(arena);
2743
- return (ret && upb_decode(buf, size, ret, &google_protobuf_EnumDescriptorProto_msginit, arena)) ? ret : NULL;
2922
+ if (!ret) return NULL;
2923
+ if (!upb_decode(buf, size, ret, &google_protobuf_EnumDescriptorProto_msginit, arena)) return NULL;
2924
+ return ret;
2744
2925
  }
2745
2926
  UPB_INLINE google_protobuf_EnumDescriptorProto *google_protobuf_EnumDescriptorProto_parse_ex(const char *buf, size_t size,
2746
- upb_arena *arena, int options) {
2927
+ const upb_extreg *extreg, int options,
2928
+ upb_arena *arena) {
2747
2929
  google_protobuf_EnumDescriptorProto *ret = google_protobuf_EnumDescriptorProto_new(arena);
2748
- return (ret && _upb_decode(buf, size, ret, &google_protobuf_EnumDescriptorProto_msginit, arena, options))
2749
- ? ret : NULL;
2930
+ if (!ret) return NULL;
2931
+ if (!_upb_decode(buf, size, ret, &google_protobuf_EnumDescriptorProto_msginit, extreg, options, arena)) {
2932
+ return NULL;
2933
+ }
2934
+ return ret;
2750
2935
  }
2751
2936
  UPB_INLINE char *google_protobuf_EnumDescriptorProto_serialize(const google_protobuf_EnumDescriptorProto *msg, upb_arena *arena, size_t *len) {
2752
2937
  return upb_encode(msg, &google_protobuf_EnumDescriptorProto_msginit, arena, len);
@@ -2824,13 +3009,19 @@ UPB_INLINE google_protobuf_EnumDescriptorProto_EnumReservedRange *google_protobu
2824
3009
  UPB_INLINE google_protobuf_EnumDescriptorProto_EnumReservedRange *google_protobuf_EnumDescriptorProto_EnumReservedRange_parse(const char *buf, size_t size,
2825
3010
  upb_arena *arena) {
2826
3011
  google_protobuf_EnumDescriptorProto_EnumReservedRange *ret = google_protobuf_EnumDescriptorProto_EnumReservedRange_new(arena);
2827
- return (ret && upb_decode(buf, size, ret, &google_protobuf_EnumDescriptorProto_EnumReservedRange_msginit, arena)) ? ret : NULL;
3012
+ if (!ret) return NULL;
3013
+ if (!upb_decode(buf, size, ret, &google_protobuf_EnumDescriptorProto_EnumReservedRange_msginit, arena)) return NULL;
3014
+ return ret;
2828
3015
  }
2829
3016
  UPB_INLINE google_protobuf_EnumDescriptorProto_EnumReservedRange *google_protobuf_EnumDescriptorProto_EnumReservedRange_parse_ex(const char *buf, size_t size,
2830
- upb_arena *arena, int options) {
3017
+ const upb_extreg *extreg, int options,
3018
+ upb_arena *arena) {
2831
3019
  google_protobuf_EnumDescriptorProto_EnumReservedRange *ret = google_protobuf_EnumDescriptorProto_EnumReservedRange_new(arena);
2832
- return (ret && _upb_decode(buf, size, ret, &google_protobuf_EnumDescriptorProto_EnumReservedRange_msginit, arena, options))
2833
- ? ret : NULL;
3020
+ if (!ret) return NULL;
3021
+ if (!_upb_decode(buf, size, ret, &google_protobuf_EnumDescriptorProto_EnumReservedRange_msginit, extreg, options, arena)) {
3022
+ return NULL;
3023
+ }
3024
+ return ret;
2834
3025
  }
2835
3026
  UPB_INLINE char *google_protobuf_EnumDescriptorProto_EnumReservedRange_serialize(const google_protobuf_EnumDescriptorProto_EnumReservedRange *msg, upb_arena *arena, size_t *len) {
2836
3027
  return upb_encode(msg, &google_protobuf_EnumDescriptorProto_EnumReservedRange_msginit, arena, len);
@@ -2858,13 +3049,19 @@ UPB_INLINE google_protobuf_EnumValueDescriptorProto *google_protobuf_EnumValueDe
2858
3049
  UPB_INLINE google_protobuf_EnumValueDescriptorProto *google_protobuf_EnumValueDescriptorProto_parse(const char *buf, size_t size,
2859
3050
  upb_arena *arena) {
2860
3051
  google_protobuf_EnumValueDescriptorProto *ret = google_protobuf_EnumValueDescriptorProto_new(arena);
2861
- return (ret && upb_decode(buf, size, ret, &google_protobuf_EnumValueDescriptorProto_msginit, arena)) ? ret : NULL;
3052
+ if (!ret) return NULL;
3053
+ if (!upb_decode(buf, size, ret, &google_protobuf_EnumValueDescriptorProto_msginit, arena)) return NULL;
3054
+ return ret;
2862
3055
  }
2863
3056
  UPB_INLINE google_protobuf_EnumValueDescriptorProto *google_protobuf_EnumValueDescriptorProto_parse_ex(const char *buf, size_t size,
2864
- upb_arena *arena, int options) {
3057
+ const upb_extreg *extreg, int options,
3058
+ upb_arena *arena) {
2865
3059
  google_protobuf_EnumValueDescriptorProto *ret = google_protobuf_EnumValueDescriptorProto_new(arena);
2866
- return (ret && _upb_decode(buf, size, ret, &google_protobuf_EnumValueDescriptorProto_msginit, arena, options))
2867
- ? ret : NULL;
3060
+ if (!ret) return NULL;
3061
+ if (!_upb_decode(buf, size, ret, &google_protobuf_EnumValueDescriptorProto_msginit, extreg, options, arena)) {
3062
+ return NULL;
3063
+ }
3064
+ return ret;
2868
3065
  }
2869
3066
  UPB_INLINE char *google_protobuf_EnumValueDescriptorProto_serialize(const google_protobuf_EnumValueDescriptorProto *msg, upb_arena *arena, size_t *len) {
2870
3067
  return upb_encode(msg, &google_protobuf_EnumValueDescriptorProto_msginit, arena, len);
@@ -2907,13 +3104,19 @@ UPB_INLINE google_protobuf_ServiceDescriptorProto *google_protobuf_ServiceDescri
2907
3104
  UPB_INLINE google_protobuf_ServiceDescriptorProto *google_protobuf_ServiceDescriptorProto_parse(const char *buf, size_t size,
2908
3105
  upb_arena *arena) {
2909
3106
  google_protobuf_ServiceDescriptorProto *ret = google_protobuf_ServiceDescriptorProto_new(arena);
2910
- return (ret && upb_decode(buf, size, ret, &google_protobuf_ServiceDescriptorProto_msginit, arena)) ? ret : NULL;
3107
+ if (!ret) return NULL;
3108
+ if (!upb_decode(buf, size, ret, &google_protobuf_ServiceDescriptorProto_msginit, arena)) return NULL;
3109
+ return ret;
2911
3110
  }
2912
3111
  UPB_INLINE google_protobuf_ServiceDescriptorProto *google_protobuf_ServiceDescriptorProto_parse_ex(const char *buf, size_t size,
2913
- upb_arena *arena, int options) {
3112
+ const upb_extreg *extreg, int options,
3113
+ upb_arena *arena) {
2914
3114
  google_protobuf_ServiceDescriptorProto *ret = google_protobuf_ServiceDescriptorProto_new(arena);
2915
- return (ret && _upb_decode(buf, size, ret, &google_protobuf_ServiceDescriptorProto_msginit, arena, options))
2916
- ? ret : NULL;
3115
+ if (!ret) return NULL;
3116
+ if (!_upb_decode(buf, size, ret, &google_protobuf_ServiceDescriptorProto_msginit, extreg, options, arena)) {
3117
+ return NULL;
3118
+ }
3119
+ return ret;
2917
3120
  }
2918
3121
  UPB_INLINE char *google_protobuf_ServiceDescriptorProto_serialize(const google_protobuf_ServiceDescriptorProto *msg, upb_arena *arena, size_t *len) {
2919
3122
  return upb_encode(msg, &google_protobuf_ServiceDescriptorProto_msginit, arena, len);
@@ -2965,13 +3168,19 @@ UPB_INLINE google_protobuf_MethodDescriptorProto *google_protobuf_MethodDescript
2965
3168
  UPB_INLINE google_protobuf_MethodDescriptorProto *google_protobuf_MethodDescriptorProto_parse(const char *buf, size_t size,
2966
3169
  upb_arena *arena) {
2967
3170
  google_protobuf_MethodDescriptorProto *ret = google_protobuf_MethodDescriptorProto_new(arena);
2968
- return (ret && upb_decode(buf, size, ret, &google_protobuf_MethodDescriptorProto_msginit, arena)) ? ret : NULL;
3171
+ if (!ret) return NULL;
3172
+ if (!upb_decode(buf, size, ret, &google_protobuf_MethodDescriptorProto_msginit, arena)) return NULL;
3173
+ return ret;
2969
3174
  }
2970
3175
  UPB_INLINE google_protobuf_MethodDescriptorProto *google_protobuf_MethodDescriptorProto_parse_ex(const char *buf, size_t size,
2971
- upb_arena *arena, int options) {
3176
+ const upb_extreg *extreg, int options,
3177
+ upb_arena *arena) {
2972
3178
  google_protobuf_MethodDescriptorProto *ret = google_protobuf_MethodDescriptorProto_new(arena);
2973
- return (ret && _upb_decode(buf, size, ret, &google_protobuf_MethodDescriptorProto_msginit, arena, options))
2974
- ? ret : NULL;
3179
+ if (!ret) return NULL;
3180
+ if (!_upb_decode(buf, size, ret, &google_protobuf_MethodDescriptorProto_msginit, extreg, options, arena)) {
3181
+ return NULL;
3182
+ }
3183
+ return ret;
2975
3184
  }
2976
3185
  UPB_INLINE char *google_protobuf_MethodDescriptorProto_serialize(const google_protobuf_MethodDescriptorProto *msg, upb_arena *arena, size_t *len) {
2977
3186
  return upb_encode(msg, &google_protobuf_MethodDescriptorProto_msginit, arena, len);
@@ -3032,13 +3241,19 @@ UPB_INLINE google_protobuf_FileOptions *google_protobuf_FileOptions_new(upb_aren
3032
3241
  UPB_INLINE google_protobuf_FileOptions *google_protobuf_FileOptions_parse(const char *buf, size_t size,
3033
3242
  upb_arena *arena) {
3034
3243
  google_protobuf_FileOptions *ret = google_protobuf_FileOptions_new(arena);
3035
- return (ret && upb_decode(buf, size, ret, &google_protobuf_FileOptions_msginit, arena)) ? ret : NULL;
3244
+ if (!ret) return NULL;
3245
+ if (!upb_decode(buf, size, ret, &google_protobuf_FileOptions_msginit, arena)) return NULL;
3246
+ return ret;
3036
3247
  }
3037
3248
  UPB_INLINE google_protobuf_FileOptions *google_protobuf_FileOptions_parse_ex(const char *buf, size_t size,
3038
- upb_arena *arena, int options) {
3249
+ const upb_extreg *extreg, int options,
3250
+ upb_arena *arena) {
3039
3251
  google_protobuf_FileOptions *ret = google_protobuf_FileOptions_new(arena);
3040
- return (ret && _upb_decode(buf, size, ret, &google_protobuf_FileOptions_msginit, arena, options))
3041
- ? ret : NULL;
3252
+ if (!ret) return NULL;
3253
+ if (!_upb_decode(buf, size, ret, &google_protobuf_FileOptions_msginit, extreg, options, arena)) {
3254
+ return NULL;
3255
+ }
3256
+ return ret;
3042
3257
  }
3043
3258
  UPB_INLINE char *google_protobuf_FileOptions_serialize(const google_protobuf_FileOptions *msg, upb_arena *arena, size_t *len) {
3044
3259
  return upb_encode(msg, &google_protobuf_FileOptions_msginit, arena, len);
@@ -3189,13 +3404,19 @@ UPB_INLINE google_protobuf_MessageOptions *google_protobuf_MessageOptions_new(up
3189
3404
  UPB_INLINE google_protobuf_MessageOptions *google_protobuf_MessageOptions_parse(const char *buf, size_t size,
3190
3405
  upb_arena *arena) {
3191
3406
  google_protobuf_MessageOptions *ret = google_protobuf_MessageOptions_new(arena);
3192
- return (ret && upb_decode(buf, size, ret, &google_protobuf_MessageOptions_msginit, arena)) ? ret : NULL;
3407
+ if (!ret) return NULL;
3408
+ if (!upb_decode(buf, size, ret, &google_protobuf_MessageOptions_msginit, arena)) return NULL;
3409
+ return ret;
3193
3410
  }
3194
3411
  UPB_INLINE google_protobuf_MessageOptions *google_protobuf_MessageOptions_parse_ex(const char *buf, size_t size,
3195
- upb_arena *arena, int options) {
3412
+ const upb_extreg *extreg, int options,
3413
+ upb_arena *arena) {
3196
3414
  google_protobuf_MessageOptions *ret = google_protobuf_MessageOptions_new(arena);
3197
- return (ret && _upb_decode(buf, size, ret, &google_protobuf_MessageOptions_msginit, arena, options))
3198
- ? ret : NULL;
3415
+ if (!ret) return NULL;
3416
+ if (!_upb_decode(buf, size, ret, &google_protobuf_MessageOptions_msginit, extreg, options, arena)) {
3417
+ return NULL;
3418
+ }
3419
+ return ret;
3199
3420
  }
3200
3421
  UPB_INLINE char *google_protobuf_MessageOptions_serialize(const google_protobuf_MessageOptions *msg, upb_arena *arena, size_t *len) {
3201
3422
  return upb_encode(msg, &google_protobuf_MessageOptions_msginit, arena, len);
@@ -3250,13 +3471,19 @@ UPB_INLINE google_protobuf_FieldOptions *google_protobuf_FieldOptions_new(upb_ar
3250
3471
  UPB_INLINE google_protobuf_FieldOptions *google_protobuf_FieldOptions_parse(const char *buf, size_t size,
3251
3472
  upb_arena *arena) {
3252
3473
  google_protobuf_FieldOptions *ret = google_protobuf_FieldOptions_new(arena);
3253
- return (ret && upb_decode(buf, size, ret, &google_protobuf_FieldOptions_msginit, arena)) ? ret : NULL;
3474
+ if (!ret) return NULL;
3475
+ if (!upb_decode(buf, size, ret, &google_protobuf_FieldOptions_msginit, arena)) return NULL;
3476
+ return ret;
3254
3477
  }
3255
3478
  UPB_INLINE google_protobuf_FieldOptions *google_protobuf_FieldOptions_parse_ex(const char *buf, size_t size,
3256
- upb_arena *arena, int options) {
3479
+ const upb_extreg *extreg, int options,
3480
+ upb_arena *arena) {
3257
3481
  google_protobuf_FieldOptions *ret = google_protobuf_FieldOptions_new(arena);
3258
- return (ret && _upb_decode(buf, size, ret, &google_protobuf_FieldOptions_msginit, arena, options))
3259
- ? ret : NULL;
3482
+ if (!ret) return NULL;
3483
+ if (!_upb_decode(buf, size, ret, &google_protobuf_FieldOptions_msginit, extreg, options, arena)) {
3484
+ return NULL;
3485
+ }
3486
+ return ret;
3260
3487
  }
3261
3488
  UPB_INLINE char *google_protobuf_FieldOptions_serialize(const google_protobuf_FieldOptions *msg, upb_arena *arena, size_t *len) {
3262
3489
  return upb_encode(msg, &google_protobuf_FieldOptions_msginit, arena, len);
@@ -3323,13 +3550,19 @@ UPB_INLINE google_protobuf_OneofOptions *google_protobuf_OneofOptions_new(upb_ar
3323
3550
  UPB_INLINE google_protobuf_OneofOptions *google_protobuf_OneofOptions_parse(const char *buf, size_t size,
3324
3551
  upb_arena *arena) {
3325
3552
  google_protobuf_OneofOptions *ret = google_protobuf_OneofOptions_new(arena);
3326
- return (ret && upb_decode(buf, size, ret, &google_protobuf_OneofOptions_msginit, arena)) ? ret : NULL;
3553
+ if (!ret) return NULL;
3554
+ if (!upb_decode(buf, size, ret, &google_protobuf_OneofOptions_msginit, arena)) return NULL;
3555
+ return ret;
3327
3556
  }
3328
3557
  UPB_INLINE google_protobuf_OneofOptions *google_protobuf_OneofOptions_parse_ex(const char *buf, size_t size,
3329
- upb_arena *arena, int options) {
3558
+ const upb_extreg *extreg, int options,
3559
+ upb_arena *arena) {
3330
3560
  google_protobuf_OneofOptions *ret = google_protobuf_OneofOptions_new(arena);
3331
- return (ret && _upb_decode(buf, size, ret, &google_protobuf_OneofOptions_msginit, arena, options))
3332
- ? ret : NULL;
3561
+ if (!ret) return NULL;
3562
+ if (!_upb_decode(buf, size, ret, &google_protobuf_OneofOptions_msginit, extreg, options, arena)) {
3563
+ return NULL;
3564
+ }
3565
+ return ret;
3333
3566
  }
3334
3567
  UPB_INLINE char *google_protobuf_OneofOptions_serialize(const google_protobuf_OneofOptions *msg, upb_arena *arena, size_t *len) {
3335
3568
  return upb_encode(msg, &google_protobuf_OneofOptions_msginit, arena, len);
@@ -3360,13 +3593,19 @@ UPB_INLINE google_protobuf_EnumOptions *google_protobuf_EnumOptions_new(upb_aren
3360
3593
  UPB_INLINE google_protobuf_EnumOptions *google_protobuf_EnumOptions_parse(const char *buf, size_t size,
3361
3594
  upb_arena *arena) {
3362
3595
  google_protobuf_EnumOptions *ret = google_protobuf_EnumOptions_new(arena);
3363
- return (ret && upb_decode(buf, size, ret, &google_protobuf_EnumOptions_msginit, arena)) ? ret : NULL;
3596
+ if (!ret) return NULL;
3597
+ if (!upb_decode(buf, size, ret, &google_protobuf_EnumOptions_msginit, arena)) return NULL;
3598
+ return ret;
3364
3599
  }
3365
3600
  UPB_INLINE google_protobuf_EnumOptions *google_protobuf_EnumOptions_parse_ex(const char *buf, size_t size,
3366
- upb_arena *arena, int options) {
3601
+ const upb_extreg *extreg, int options,
3602
+ upb_arena *arena) {
3367
3603
  google_protobuf_EnumOptions *ret = google_protobuf_EnumOptions_new(arena);
3368
- return (ret && _upb_decode(buf, size, ret, &google_protobuf_EnumOptions_msginit, arena, options))
3369
- ? ret : NULL;
3604
+ if (!ret) return NULL;
3605
+ if (!_upb_decode(buf, size, ret, &google_protobuf_EnumOptions_msginit, extreg, options, arena)) {
3606
+ return NULL;
3607
+ }
3608
+ return ret;
3370
3609
  }
3371
3610
  UPB_INLINE char *google_protobuf_EnumOptions_serialize(const google_protobuf_EnumOptions *msg, upb_arena *arena, size_t *len) {
3372
3611
  return upb_encode(msg, &google_protobuf_EnumOptions_msginit, arena, len);
@@ -3409,13 +3648,19 @@ UPB_INLINE google_protobuf_EnumValueOptions *google_protobuf_EnumValueOptions_ne
3409
3648
  UPB_INLINE google_protobuf_EnumValueOptions *google_protobuf_EnumValueOptions_parse(const char *buf, size_t size,
3410
3649
  upb_arena *arena) {
3411
3650
  google_protobuf_EnumValueOptions *ret = google_protobuf_EnumValueOptions_new(arena);
3412
- return (ret && upb_decode(buf, size, ret, &google_protobuf_EnumValueOptions_msginit, arena)) ? ret : NULL;
3651
+ if (!ret) return NULL;
3652
+ if (!upb_decode(buf, size, ret, &google_protobuf_EnumValueOptions_msginit, arena)) return NULL;
3653
+ return ret;
3413
3654
  }
3414
3655
  UPB_INLINE google_protobuf_EnumValueOptions *google_protobuf_EnumValueOptions_parse_ex(const char *buf, size_t size,
3415
- upb_arena *arena, int options) {
3656
+ const upb_extreg *extreg, int options,
3657
+ upb_arena *arena) {
3416
3658
  google_protobuf_EnumValueOptions *ret = google_protobuf_EnumValueOptions_new(arena);
3417
- return (ret && _upb_decode(buf, size, ret, &google_protobuf_EnumValueOptions_msginit, arena, options))
3418
- ? ret : NULL;
3659
+ if (!ret) return NULL;
3660
+ if (!_upb_decode(buf, size, ret, &google_protobuf_EnumValueOptions_msginit, extreg, options, arena)) {
3661
+ return NULL;
3662
+ }
3663
+ return ret;
3419
3664
  }
3420
3665
  UPB_INLINE char *google_protobuf_EnumValueOptions_serialize(const google_protobuf_EnumValueOptions *msg, upb_arena *arena, size_t *len) {
3421
3666
  return upb_encode(msg, &google_protobuf_EnumValueOptions_msginit, arena, len);
@@ -3452,13 +3697,19 @@ UPB_INLINE google_protobuf_ServiceOptions *google_protobuf_ServiceOptions_new(up
3452
3697
  UPB_INLINE google_protobuf_ServiceOptions *google_protobuf_ServiceOptions_parse(const char *buf, size_t size,
3453
3698
  upb_arena *arena) {
3454
3699
  google_protobuf_ServiceOptions *ret = google_protobuf_ServiceOptions_new(arena);
3455
- return (ret && upb_decode(buf, size, ret, &google_protobuf_ServiceOptions_msginit, arena)) ? ret : NULL;
3700
+ if (!ret) return NULL;
3701
+ if (!upb_decode(buf, size, ret, &google_protobuf_ServiceOptions_msginit, arena)) return NULL;
3702
+ return ret;
3456
3703
  }
3457
3704
  UPB_INLINE google_protobuf_ServiceOptions *google_protobuf_ServiceOptions_parse_ex(const char *buf, size_t size,
3458
- upb_arena *arena, int options) {
3705
+ const upb_extreg *extreg, int options,
3706
+ upb_arena *arena) {
3459
3707
  google_protobuf_ServiceOptions *ret = google_protobuf_ServiceOptions_new(arena);
3460
- return (ret && _upb_decode(buf, size, ret, &google_protobuf_ServiceOptions_msginit, arena, options))
3461
- ? ret : NULL;
3708
+ if (!ret) return NULL;
3709
+ if (!_upb_decode(buf, size, ret, &google_protobuf_ServiceOptions_msginit, extreg, options, arena)) {
3710
+ return NULL;
3711
+ }
3712
+ return ret;
3462
3713
  }
3463
3714
  UPB_INLINE char *google_protobuf_ServiceOptions_serialize(const google_protobuf_ServiceOptions *msg, upb_arena *arena, size_t *len) {
3464
3715
  return upb_encode(msg, &google_protobuf_ServiceOptions_msginit, arena, len);
@@ -3495,13 +3746,19 @@ UPB_INLINE google_protobuf_MethodOptions *google_protobuf_MethodOptions_new(upb_
3495
3746
  UPB_INLINE google_protobuf_MethodOptions *google_protobuf_MethodOptions_parse(const char *buf, size_t size,
3496
3747
  upb_arena *arena) {
3497
3748
  google_protobuf_MethodOptions *ret = google_protobuf_MethodOptions_new(arena);
3498
- return (ret && upb_decode(buf, size, ret, &google_protobuf_MethodOptions_msginit, arena)) ? ret : NULL;
3749
+ if (!ret) return NULL;
3750
+ if (!upb_decode(buf, size, ret, &google_protobuf_MethodOptions_msginit, arena)) return NULL;
3751
+ return ret;
3499
3752
  }
3500
3753
  UPB_INLINE google_protobuf_MethodOptions *google_protobuf_MethodOptions_parse_ex(const char *buf, size_t size,
3501
- upb_arena *arena, int options) {
3754
+ const upb_extreg *extreg, int options,
3755
+ upb_arena *arena) {
3502
3756
  google_protobuf_MethodOptions *ret = google_protobuf_MethodOptions_new(arena);
3503
- return (ret && _upb_decode(buf, size, ret, &google_protobuf_MethodOptions_msginit, arena, options))
3504
- ? ret : NULL;
3757
+ if (!ret) return NULL;
3758
+ if (!_upb_decode(buf, size, ret, &google_protobuf_MethodOptions_msginit, extreg, options, arena)) {
3759
+ return NULL;
3760
+ }
3761
+ return ret;
3505
3762
  }
3506
3763
  UPB_INLINE char *google_protobuf_MethodOptions_serialize(const google_protobuf_MethodOptions *msg, upb_arena *arena, size_t *len) {
3507
3764
  return upb_encode(msg, &google_protobuf_MethodOptions_msginit, arena, len);
@@ -3544,13 +3801,19 @@ UPB_INLINE google_protobuf_UninterpretedOption *google_protobuf_UninterpretedOpt
3544
3801
  UPB_INLINE google_protobuf_UninterpretedOption *google_protobuf_UninterpretedOption_parse(const char *buf, size_t size,
3545
3802
  upb_arena *arena) {
3546
3803
  google_protobuf_UninterpretedOption *ret = google_protobuf_UninterpretedOption_new(arena);
3547
- return (ret && upb_decode(buf, size, ret, &google_protobuf_UninterpretedOption_msginit, arena)) ? ret : NULL;
3804
+ if (!ret) return NULL;
3805
+ if (!upb_decode(buf, size, ret, &google_protobuf_UninterpretedOption_msginit, arena)) return NULL;
3806
+ return ret;
3548
3807
  }
3549
3808
  UPB_INLINE google_protobuf_UninterpretedOption *google_protobuf_UninterpretedOption_parse_ex(const char *buf, size_t size,
3550
- upb_arena *arena, int options) {
3809
+ const upb_extreg *extreg, int options,
3810
+ upb_arena *arena) {
3551
3811
  google_protobuf_UninterpretedOption *ret = google_protobuf_UninterpretedOption_new(arena);
3552
- return (ret && _upb_decode(buf, size, ret, &google_protobuf_UninterpretedOption_msginit, arena, options))
3553
- ? ret : NULL;
3812
+ if (!ret) return NULL;
3813
+ if (!_upb_decode(buf, size, ret, &google_protobuf_UninterpretedOption_msginit, extreg, options, arena)) {
3814
+ return NULL;
3815
+ }
3816
+ return ret;
3554
3817
  }
3555
3818
  UPB_INLINE char *google_protobuf_UninterpretedOption_serialize(const google_protobuf_UninterpretedOption *msg, upb_arena *arena, size_t *len) {
3556
3819
  return upb_encode(msg, &google_protobuf_UninterpretedOption_msginit, arena, len);
@@ -3617,13 +3880,19 @@ UPB_INLINE google_protobuf_UninterpretedOption_NamePart *google_protobuf_Uninter
3617
3880
  UPB_INLINE google_protobuf_UninterpretedOption_NamePart *google_protobuf_UninterpretedOption_NamePart_parse(const char *buf, size_t size,
3618
3881
  upb_arena *arena) {
3619
3882
  google_protobuf_UninterpretedOption_NamePart *ret = google_protobuf_UninterpretedOption_NamePart_new(arena);
3620
- return (ret && upb_decode(buf, size, ret, &google_protobuf_UninterpretedOption_NamePart_msginit, arena)) ? ret : NULL;
3883
+ if (!ret) return NULL;
3884
+ if (!upb_decode(buf, size, ret, &google_protobuf_UninterpretedOption_NamePart_msginit, arena)) return NULL;
3885
+ return ret;
3621
3886
  }
3622
3887
  UPB_INLINE google_protobuf_UninterpretedOption_NamePart *google_protobuf_UninterpretedOption_NamePart_parse_ex(const char *buf, size_t size,
3623
- upb_arena *arena, int options) {
3888
+ const upb_extreg *extreg, int options,
3889
+ upb_arena *arena) {
3624
3890
  google_protobuf_UninterpretedOption_NamePart *ret = google_protobuf_UninterpretedOption_NamePart_new(arena);
3625
- return (ret && _upb_decode(buf, size, ret, &google_protobuf_UninterpretedOption_NamePart_msginit, arena, options))
3626
- ? ret : NULL;
3891
+ if (!ret) return NULL;
3892
+ if (!_upb_decode(buf, size, ret, &google_protobuf_UninterpretedOption_NamePart_msginit, extreg, options, arena)) {
3893
+ return NULL;
3894
+ }
3895
+ return ret;
3627
3896
  }
3628
3897
  UPB_INLINE char *google_protobuf_UninterpretedOption_NamePart_serialize(const google_protobuf_UninterpretedOption_NamePart *msg, upb_arena *arena, size_t *len) {
3629
3898
  return upb_encode(msg, &google_protobuf_UninterpretedOption_NamePart_msginit, arena, len);
@@ -3651,13 +3920,19 @@ UPB_INLINE google_protobuf_SourceCodeInfo *google_protobuf_SourceCodeInfo_new(up
3651
3920
  UPB_INLINE google_protobuf_SourceCodeInfo *google_protobuf_SourceCodeInfo_parse(const char *buf, size_t size,
3652
3921
  upb_arena *arena) {
3653
3922
  google_protobuf_SourceCodeInfo *ret = google_protobuf_SourceCodeInfo_new(arena);
3654
- return (ret && upb_decode(buf, size, ret, &google_protobuf_SourceCodeInfo_msginit, arena)) ? ret : NULL;
3923
+ if (!ret) return NULL;
3924
+ if (!upb_decode(buf, size, ret, &google_protobuf_SourceCodeInfo_msginit, arena)) return NULL;
3925
+ return ret;
3655
3926
  }
3656
3927
  UPB_INLINE google_protobuf_SourceCodeInfo *google_protobuf_SourceCodeInfo_parse_ex(const char *buf, size_t size,
3657
- upb_arena *arena, int options) {
3928
+ const upb_extreg *extreg, int options,
3929
+ upb_arena *arena) {
3658
3930
  google_protobuf_SourceCodeInfo *ret = google_protobuf_SourceCodeInfo_new(arena);
3659
- return (ret && _upb_decode(buf, size, ret, &google_protobuf_SourceCodeInfo_msginit, arena, options))
3660
- ? ret : NULL;
3931
+ if (!ret) return NULL;
3932
+ if (!_upb_decode(buf, size, ret, &google_protobuf_SourceCodeInfo_msginit, extreg, options, arena)) {
3933
+ return NULL;
3934
+ }
3935
+ return ret;
3661
3936
  }
3662
3937
  UPB_INLINE char *google_protobuf_SourceCodeInfo_serialize(const google_protobuf_SourceCodeInfo *msg, upb_arena *arena, size_t *len) {
3663
3938
  return upb_encode(msg, &google_protobuf_SourceCodeInfo_msginit, arena, len);
@@ -3688,13 +3963,19 @@ UPB_INLINE google_protobuf_SourceCodeInfo_Location *google_protobuf_SourceCodeIn
3688
3963
  UPB_INLINE google_protobuf_SourceCodeInfo_Location *google_protobuf_SourceCodeInfo_Location_parse(const char *buf, size_t size,
3689
3964
  upb_arena *arena) {
3690
3965
  google_protobuf_SourceCodeInfo_Location *ret = google_protobuf_SourceCodeInfo_Location_new(arena);
3691
- return (ret && upb_decode(buf, size, ret, &google_protobuf_SourceCodeInfo_Location_msginit, arena)) ? ret : NULL;
3966
+ if (!ret) return NULL;
3967
+ if (!upb_decode(buf, size, ret, &google_protobuf_SourceCodeInfo_Location_msginit, arena)) return NULL;
3968
+ return ret;
3692
3969
  }
3693
3970
  UPB_INLINE google_protobuf_SourceCodeInfo_Location *google_protobuf_SourceCodeInfo_Location_parse_ex(const char *buf, size_t size,
3694
- upb_arena *arena, int options) {
3971
+ const upb_extreg *extreg, int options,
3972
+ upb_arena *arena) {
3695
3973
  google_protobuf_SourceCodeInfo_Location *ret = google_protobuf_SourceCodeInfo_Location_new(arena);
3696
- return (ret && _upb_decode(buf, size, ret, &google_protobuf_SourceCodeInfo_Location_msginit, arena, options))
3697
- ? ret : NULL;
3974
+ if (!ret) return NULL;
3975
+ if (!_upb_decode(buf, size, ret, &google_protobuf_SourceCodeInfo_Location_msginit, extreg, options, arena)) {
3976
+ return NULL;
3977
+ }
3978
+ return ret;
3698
3979
  }
3699
3980
  UPB_INLINE char *google_protobuf_SourceCodeInfo_Location_serialize(const google_protobuf_SourceCodeInfo_Location *msg, upb_arena *arena, size_t *len) {
3700
3981
  return upb_encode(msg, &google_protobuf_SourceCodeInfo_Location_msginit, arena, len);
@@ -3755,13 +4036,19 @@ UPB_INLINE google_protobuf_GeneratedCodeInfo *google_protobuf_GeneratedCodeInfo_
3755
4036
  UPB_INLINE google_protobuf_GeneratedCodeInfo *google_protobuf_GeneratedCodeInfo_parse(const char *buf, size_t size,
3756
4037
  upb_arena *arena) {
3757
4038
  google_protobuf_GeneratedCodeInfo *ret = google_protobuf_GeneratedCodeInfo_new(arena);
3758
- return (ret && upb_decode(buf, size, ret, &google_protobuf_GeneratedCodeInfo_msginit, arena)) ? ret : NULL;
4039
+ if (!ret) return NULL;
4040
+ if (!upb_decode(buf, size, ret, &google_protobuf_GeneratedCodeInfo_msginit, arena)) return NULL;
4041
+ return ret;
3759
4042
  }
3760
4043
  UPB_INLINE google_protobuf_GeneratedCodeInfo *google_protobuf_GeneratedCodeInfo_parse_ex(const char *buf, size_t size,
3761
- upb_arena *arena, int options) {
4044
+ const upb_extreg *extreg, int options,
4045
+ upb_arena *arena) {
3762
4046
  google_protobuf_GeneratedCodeInfo *ret = google_protobuf_GeneratedCodeInfo_new(arena);
3763
- return (ret && _upb_decode(buf, size, ret, &google_protobuf_GeneratedCodeInfo_msginit, arena, options))
3764
- ? ret : NULL;
4047
+ if (!ret) return NULL;
4048
+ if (!_upb_decode(buf, size, ret, &google_protobuf_GeneratedCodeInfo_msginit, extreg, options, arena)) {
4049
+ return NULL;
4050
+ }
4051
+ return ret;
3765
4052
  }
3766
4053
  UPB_INLINE char *google_protobuf_GeneratedCodeInfo_serialize(const google_protobuf_GeneratedCodeInfo *msg, upb_arena *arena, size_t *len) {
3767
4054
  return upb_encode(msg, &google_protobuf_GeneratedCodeInfo_msginit, arena, len);
@@ -3792,13 +4079,19 @@ UPB_INLINE google_protobuf_GeneratedCodeInfo_Annotation *google_protobuf_Generat
3792
4079
  UPB_INLINE google_protobuf_GeneratedCodeInfo_Annotation *google_protobuf_GeneratedCodeInfo_Annotation_parse(const char *buf, size_t size,
3793
4080
  upb_arena *arena) {
3794
4081
  google_protobuf_GeneratedCodeInfo_Annotation *ret = google_protobuf_GeneratedCodeInfo_Annotation_new(arena);
3795
- return (ret && upb_decode(buf, size, ret, &google_protobuf_GeneratedCodeInfo_Annotation_msginit, arena)) ? ret : NULL;
4082
+ if (!ret) return NULL;
4083
+ if (!upb_decode(buf, size, ret, &google_protobuf_GeneratedCodeInfo_Annotation_msginit, arena)) return NULL;
4084
+ return ret;
3796
4085
  }
3797
4086
  UPB_INLINE google_protobuf_GeneratedCodeInfo_Annotation *google_protobuf_GeneratedCodeInfo_Annotation_parse_ex(const char *buf, size_t size,
3798
- upb_arena *arena, int options) {
4087
+ const upb_extreg *extreg, int options,
4088
+ upb_arena *arena) {
3799
4089
  google_protobuf_GeneratedCodeInfo_Annotation *ret = google_protobuf_GeneratedCodeInfo_Annotation_new(arena);
3800
- return (ret && _upb_decode(buf, size, ret, &google_protobuf_GeneratedCodeInfo_Annotation_msginit, arena, options))
3801
- ? ret : NULL;
4090
+ if (!ret) return NULL;
4091
+ if (!_upb_decode(buf, size, ret, &google_protobuf_GeneratedCodeInfo_Annotation_msginit, extreg, options, arena)) {
4092
+ return NULL;
4093
+ }
4094
+ return ret;
3802
4095
  }
3803
4096
  UPB_INLINE char *google_protobuf_GeneratedCodeInfo_Annotation_serialize(const google_protobuf_GeneratedCodeInfo_Annotation *msg, upb_arena *arena, size_t *len) {
3804
4097
  return upb_encode(msg, &google_protobuf_GeneratedCodeInfo_Annotation_msginit, arena, len);