Auto-generate files after cl/696922501
diff --git a/csharp/src/Google.Protobuf/Reflection/FeatureSetDescriptor.g.cs b/csharp/src/Google.Protobuf/Reflection/FeatureSetDescriptor.g.cs
new file mode 100644
index 0000000..208ce1f
--- /dev/null
+++ b/csharp/src/Google.Protobuf/Reflection/FeatureSetDescriptor.g.cs
@@ -0,0 +1,17 @@
+#region Copyright notice and license
+// Protocol Buffers - Google's data interchange format
+// Copyright 2008 Google Inc. All rights reserved.
+//
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file or at
+// https://developers.google.com/open-source/licenses/bsd
+#endregion
+
+namespace Google.Protobuf.Reflection;
+
+internal sealed partial class FeatureSetDescriptor
+{
+ // Canonical serialized form of the edition defaults, generated by embed_edition_defaults.
+ private const string DefaultsBase64 =
+ "ChMYhAciACoMCAEQAhgCIAMoATACChMY5wciACoMCAIQARgBIAIoATABChMY6AciDAgBEAEYASACKAEwASoAIOYHKOgH";
+}
diff --git a/php/ext/google/protobuf/php-upb.c b/php/ext/google/protobuf/php-upb.c
index d3e51ec..a269a7d 100644
--- a/php/ext/google/protobuf/php-upb.c
+++ b/php/ext/google/protobuf/php-upb.c
@@ -4267,6 +4267,7 @@
#include <stdbool.h>
+#include <stdint.h>
#include <string.h>
@@ -4520,12 +4521,12 @@
}
// Clone unknowns.
- size_t unknown_size = 0;
- const char* ptr = upb_Message_GetUnknown(src, &unknown_size);
- if (unknown_size != 0) {
- UPB_ASSERT(ptr);
+ uintptr_t iter = kUpb_Message_UnknownBegin;
+ upb_StringView unknowns;
+ while (upb_Message_NextUnknown(src, &unknowns, &iter)) {
// Make a copy into destination arena.
- if (!UPB_PRIVATE(_upb_Message_AddUnknown)(dst, ptr, unknown_size, arena)) {
+ if (!UPB_PRIVATE(_upb_Message_AddUnknown)(dst, unknowns.data, unknowns.size,
+ arena)) {
return NULL;
}
}
@@ -6224,11 +6225,14 @@
upb_Message* existing =
UPB_PRIVATE(_upb_TaggedMessagePtr_GetEmptyMessage)(tagged);
upb_Message* promoted = _upb_Decoder_NewSubMessage(d, subs, field, target);
- size_t size;
- const char* unknown = upb_Message_GetUnknown(existing, &size);
- upb_DecodeStatus status = upb_Decode(unknown, size, promoted, subl, d->extreg,
- d->options, &d->arena);
- if (status != kUpb_DecodeStatus_Ok) _upb_Decoder_ErrorJmp(d, status);
+ uintptr_t iter = kUpb_Message_UnknownBegin;
+ upb_StringView unknown;
+ while (upb_Message_NextUnknown(existing, &unknown, &iter)) {
+ upb_DecodeStatus status =
+ upb_Decode(unknown.data, unknown.size, promoted, subl, d->extreg,
+ d->options, &d->arena);
+ if (status != kUpb_DecodeStatus_Ok) _upb_Decoder_ErrorJmp(d, status);
+ }
return promoted;
}
@@ -6594,10 +6598,7 @@
ptr = _upb_Decoder_DecodeSubMessage(d, ptr, &ent.message, subs, field,
val->size);
- // check if ent had any unknown fields
- size_t size;
- upb_Message_GetUnknown(&ent.message, &size);
- if (size != 0) {
+ if (upb_Message_HasUnknown(&ent.message)) {
char* buf;
size_t size;
uint32_t tag =
@@ -7937,11 +7938,22 @@
}
if ((e->options & kUpb_EncodeOption_SkipUnknown) == 0) {
- size_t unknown_size;
- const char* unknown = upb_Message_GetUnknown(msg, &unknown_size);
-
- if (unknown) {
- encode_bytes(e, unknown, unknown_size);
+ size_t unknown_size = 0;
+ uintptr_t iter = kUpb_Message_UnknownBegin;
+ upb_StringView unknown;
+ // Need to write in reverse order, but list is single-linked; scan to
+ // reserve capacity up front, then write in-order
+ while (upb_Message_NextUnknown(msg, &unknown, &iter)) {
+ unknown_size += unknown.size;
+ }
+ if (unknown_size != 0) {
+ encode_reserve(e, unknown_size);
+ char* ptr = e->ptr;
+ iter = kUpb_Message_UnknownBegin;
+ while (upb_Message_NextUnknown(msg, &unknown, &iter)) {
+ memcpy(ptr, unknown.data, unknown.size);
+ ptr += unknown.size;
+ }
}
}
diff --git a/ruby/ext/google/protobuf_c/ruby-upb.c b/ruby/ext/google/protobuf_c/ruby-upb.c
index 9102f55..0b4b5ff 100644
--- a/ruby/ext/google/protobuf_c/ruby-upb.c
+++ b/ruby/ext/google/protobuf_c/ruby-upb.c
@@ -4267,6 +4267,7 @@
#include <stdbool.h>
+#include <stdint.h>
#include <string.h>
@@ -4520,12 +4521,12 @@
}
// Clone unknowns.
- size_t unknown_size = 0;
- const char* ptr = upb_Message_GetUnknown(src, &unknown_size);
- if (unknown_size != 0) {
- UPB_ASSERT(ptr);
+ uintptr_t iter = kUpb_Message_UnknownBegin;
+ upb_StringView unknowns;
+ while (upb_Message_NextUnknown(src, &unknowns, &iter)) {
// Make a copy into destination arena.
- if (!UPB_PRIVATE(_upb_Message_AddUnknown)(dst, ptr, unknown_size, arena)) {
+ if (!UPB_PRIVATE(_upb_Message_AddUnknown)(dst, unknowns.data, unknowns.size,
+ arena)) {
return NULL;
}
}
@@ -6224,11 +6225,14 @@
upb_Message* existing =
UPB_PRIVATE(_upb_TaggedMessagePtr_GetEmptyMessage)(tagged);
upb_Message* promoted = _upb_Decoder_NewSubMessage(d, subs, field, target);
- size_t size;
- const char* unknown = upb_Message_GetUnknown(existing, &size);
- upb_DecodeStatus status = upb_Decode(unknown, size, promoted, subl, d->extreg,
- d->options, &d->arena);
- if (status != kUpb_DecodeStatus_Ok) _upb_Decoder_ErrorJmp(d, status);
+ uintptr_t iter = kUpb_Message_UnknownBegin;
+ upb_StringView unknown;
+ while (upb_Message_NextUnknown(existing, &unknown, &iter)) {
+ upb_DecodeStatus status =
+ upb_Decode(unknown.data, unknown.size, promoted, subl, d->extreg,
+ d->options, &d->arena);
+ if (status != kUpb_DecodeStatus_Ok) _upb_Decoder_ErrorJmp(d, status);
+ }
return promoted;
}
@@ -6594,10 +6598,7 @@
ptr = _upb_Decoder_DecodeSubMessage(d, ptr, &ent.message, subs, field,
val->size);
- // check if ent had any unknown fields
- size_t size;
- upb_Message_GetUnknown(&ent.message, &size);
- if (size != 0) {
+ if (upb_Message_HasUnknown(&ent.message)) {
char* buf;
size_t size;
uint32_t tag =
@@ -7937,11 +7938,22 @@
}
if ((e->options & kUpb_EncodeOption_SkipUnknown) == 0) {
- size_t unknown_size;
- const char* unknown = upb_Message_GetUnknown(msg, &unknown_size);
-
- if (unknown) {
- encode_bytes(e, unknown, unknown_size);
+ size_t unknown_size = 0;
+ uintptr_t iter = kUpb_Message_UnknownBegin;
+ upb_StringView unknown;
+ // Need to write in reverse order, but list is single-linked; scan to
+ // reserve capacity up front, then write in-order
+ while (upb_Message_NextUnknown(msg, &unknown, &iter)) {
+ unknown_size += unknown.size;
+ }
+ if (unknown_size != 0) {
+ encode_reserve(e, unknown_size);
+ char* ptr = e->ptr;
+ iter = kUpb_Message_UnknownBegin;
+ while (upb_Message_NextUnknown(msg, &unknown, &iter)) {
+ memcpy(ptr, unknown.data, unknown.size);
+ ptr += unknown.size;
+ }
}
}