Auto-generate files after cl/579321454
diff --git a/ruby/ext/google/protobuf_c/ruby-upb.h b/ruby/ext/google/protobuf_c/ruby-upb.h
index 9393812..ba67dfa 100755
--- a/ruby/ext/google/protobuf_c/ruby-upb.h
+++ b/ruby/ext/google/protobuf_c/ruby-upb.h
@@ -320,8 +320,13 @@
#if defined(UPB_IS_GOOGLE3) && !defined(UPB_BOOTSTRAP_STAGE0)
#define UPB_DESC(sym) proto2_##sym
+#define UPB_DESC_MINITABLE(sym) &proto2__##sym##_msg_init
+#elif defined(UPB_BOOTSTRAP_STAGE0)
+#define UPB_DESC(sym) google_protobuf_##sym
+#define UPB_DESC_MINITABLE(sym) google__protobuf__##sym##_msg_init()
#else
#define UPB_DESC(sym) google_protobuf_##sym
+#define UPB_DESC_MINITABLE(sym) &google__protobuf__##sym##_msg_init
#endif
#ifndef UPB_BASE_STATUS_H_
@@ -10660,6 +10665,9 @@
UPB_API upb_DefPool* upb_DefPool_New(void);
+UPB_API const UPB_DESC(FeatureSetDefaults) *
+ upb_DefPool_FeatureSetDefaults(const upb_DefPool* s);
+
UPB_API const upb_MessageDef* upb_DefPool_FindMessageByName(
const upb_DefPool* s, const char* sym);
@@ -10751,6 +10759,7 @@
const char* upb_EnumDef_Name(const upb_EnumDef* e);
const UPB_DESC(EnumOptions) * upb_EnumDef_Options(const upb_EnumDef* e);
+const UPB_DESC(FeatureSet) * upb_EnumDef_ResolvedFeatures(const upb_EnumDef* e);
upb_StringView upb_EnumDef_ReservedName(const upb_EnumDef* e, int i);
int upb_EnumDef_ReservedNameCount(const upb_EnumDef* e);
@@ -10789,6 +10798,8 @@
UPB_API int32_t upb_EnumValueDef_Number(const upb_EnumValueDef* v);
const UPB_DESC(EnumValueOptions) *
upb_EnumValueDef_Options(const upb_EnumValueDef* v);
+const UPB_DESC(FeatureSet) *
+ upb_EnumValueDef_ResolvedFeatures(const upb_EnumValueDef* e);
#ifdef __cplusplus
} /* extern "C" */
@@ -10815,6 +10826,8 @@
bool upb_ExtensionRange_HasOptions(const upb_ExtensionRange* r);
const UPB_DESC(ExtensionRangeOptions) *
upb_ExtensionRange_Options(const upb_ExtensionRange* r);
+const UPB_DESC(FeatureSet) *
+ upb_ExtensionRange_ResolvedFeatures(const upb_ExtensionRange* e);
#ifdef __cplusplus
} /* extern "C" */
@@ -10876,6 +10889,8 @@
UPB_API const char* upb_FieldDef_Name(const upb_FieldDef* f);
UPB_API uint32_t upb_FieldDef_Number(const upb_FieldDef* f);
const UPB_DESC(FieldOptions) * upb_FieldDef_Options(const upb_FieldDef* f);
+const UPB_DESC(FeatureSet) *
+ upb_FieldDef_ResolvedFeatures(const upb_FieldDef* f);
UPB_API const upb_OneofDef* upb_FieldDef_RealContainingOneof(
const upb_FieldDef* f);
UPB_API upb_FieldType upb_FieldDef_Type(const upb_FieldDef* f);
@@ -10904,6 +10919,7 @@
bool upb_FileDef_HasOptions(const upb_FileDef* f);
UPB_API const char* upb_FileDef_Name(const upb_FileDef* f);
const UPB_DESC(FileOptions) * upb_FileDef_Options(const upb_FileDef* f);
+const UPB_DESC(FeatureSet) * upb_FileDef_ResolvedFeatures(const upb_FileDef* f);
const char* upb_FileDef_Package(const upb_FileDef* f);
UPB_DESC(Edition) upb_FileDef_Edition(const upb_FileDef* f);
UPB_API const upb_DefPool* upb_FileDef_Pool(const upb_FileDef* f);
@@ -11063,6 +11079,8 @@
const UPB_DESC(MessageOptions) *
upb_MessageDef_Options(const upb_MessageDef* m);
+const UPB_DESC(FeatureSet) *
+ upb_MessageDef_ResolvedFeatures(const upb_MessageDef* m);
upb_StringView upb_MessageDef_ReservedName(const upb_MessageDef* m, int i);
int upb_MessageDef_ReservedNameCount(const upb_MessageDef* m);
@@ -11100,6 +11118,8 @@
const upb_MessageDef* upb_MethodDef_InputType(const upb_MethodDef* m);
const char* upb_MethodDef_Name(const upb_MethodDef* m);
const UPB_DESC(MethodOptions) * upb_MethodDef_Options(const upb_MethodDef* m);
+const UPB_DESC(FeatureSet) *
+ upb_MethodDef_ResolvedFeatures(const upb_MethodDef* m);
const upb_MessageDef* upb_MethodDef_OutputType(const upb_MethodDef* m);
bool upb_MethodDef_ServerStreaming(const upb_MethodDef* m);
const upb_ServiceDef* upb_MethodDef_Service(const upb_MethodDef* m);
@@ -11140,7 +11160,9 @@
uint32_t num);
UPB_API const char* upb_OneofDef_Name(const upb_OneofDef* o);
int upb_OneofDef_numfields(const upb_OneofDef* o);
-const UPB_DESC(OneofOptions) * upb_OneofDef_Options(const upb_OneofDef* o);
+const UPB_DESC(OneofOptions*) upb_OneofDef_Options(const upb_OneofDef* o);
+const UPB_DESC(FeatureSet*)
+ upb_OneofDef_ResolvedFeatures(const upb_OneofDef* o);
#ifdef __cplusplus
} /* extern "C" */
@@ -11172,6 +11194,8 @@
const char* upb_ServiceDef_Name(const upb_ServiceDef* s);
const UPB_DESC(ServiceOptions) *
upb_ServiceDef_Options(const upb_ServiceDef* s);
+const UPB_DESC(FeatureSet) *
+ upb_ServiceDef_ResolvedFeatures(const upb_ServiceDef* s);
#ifdef __cplusplus
} /* extern "C" */
@@ -11872,6 +11896,42 @@
#endif // UPB_WIRE_READER_H_
+#ifndef UPB_MESSAGE_COPY_H_
+#define UPB_MESSAGE_COPY_H_
+
+
+// Must be last.
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+// Deep clones a message using the provided target arena.
+upb_Message* upb_Message_DeepClone(const upb_Message* message,
+ const upb_MiniTable* mini_table,
+ upb_Arena* arena);
+
+// Deep clones array contents.
+upb_Array* upb_Array_DeepClone(const upb_Array* array, upb_CType value_type,
+ const upb_MiniTable* sub, upb_Arena* arena);
+
+// Deep clones map contents.
+upb_Map* upb_Map_DeepClone(const upb_Map* map, upb_CType key_type,
+ upb_CType value_type,
+ const upb_MiniTable* map_entry_table,
+ upb_Arena* arena);
+
+// Deep copies the message from src to dst.
+bool upb_Message_DeepCopy(upb_Message* dst, const upb_Message* src,
+ const upb_MiniTable* mini_table, upb_Arena* arena);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+
+#endif // UPB_MESSAGE_COPY_H_
+
// EVERYTHING BELOW THIS LINE IS INTERNAL - DO NOT USE /////////////////////////
#ifndef UPB_COLLECTIONS_INTERNAL_MAP_SORTER_H_
@@ -12325,6 +12385,10 @@
struct upb_DefBuilder {
upb_DefPool* symtab;
+ upb_strtable feature_cache; // Caches features by identity.
+ UPB_DESC(FeatureSet*) legacy_features; // For computing legacy features.
+ char* tmp_buf; // Temporary buffer in tmp_arena.
+ size_t tmp_buf_size; // Size of temporary buffer.
upb_FileDef* file; // File we are building.
upb_Arena* arena; // Allocate defs here.
upb_Arena* tmp_arena; // For temporary allocations.
@@ -12417,6 +12481,25 @@
if (!good) _upb_DefBuilder_CheckIdentSlow(ctx, name, true);
}
+// Returns true if the returned feature set is new and must be populated.
+bool _upb_DefBuilder_GetOrCreateFeatureSet(upb_DefBuilder* ctx,
+ const UPB_DESC(FeatureSet*) parent,
+ upb_StringView key,
+ UPB_DESC(FeatureSet**) set);
+
+const UPB_DESC(FeatureSet*)
+ _upb_DefBuilder_DoResolveFeatures(upb_DefBuilder* ctx,
+ const UPB_DESC(FeatureSet*) parent,
+ const UPB_DESC(FeatureSet*) child,
+ bool is_implicit);
+
+UPB_INLINE const UPB_DESC(FeatureSet*)
+ _upb_DefBuilder_ResolveFeatures(upb_DefBuilder* ctx,
+ const UPB_DESC(FeatureSet*) parent,
+ const UPB_DESC(FeatureSet*) child) {
+ return _upb_DefBuilder_DoResolveFeatures(ctx, parent, child, false);
+}
+
#ifdef __cplusplus
} /* extern "C" */
#endif
@@ -12439,10 +12522,11 @@
const upb_MiniTableEnum* _upb_EnumDef_MiniTable(const upb_EnumDef* e);
// Allocate and initialize an array of |n| enum defs.
-upb_EnumDef* _upb_EnumDefs_New(
- upb_DefBuilder* ctx, int n,
- const UPB_DESC(EnumDescriptorProto) * const* protos,
- const upb_MessageDef* containing_type);
+upb_EnumDef* _upb_EnumDefs_New(upb_DefBuilder* ctx, int n,
+ const UPB_DESC(EnumDescriptorProto*)
+ const* protos,
+ const UPB_DESC(FeatureSet*) parent_features,
+ const upb_MessageDef* containing_type);
#ifdef __cplusplus
} /* extern "C" */
@@ -12466,7 +12550,8 @@
// Allocate and initialize an array of |n| enum value defs owned by |e|.
upb_EnumValueDef* _upb_EnumValueDefs_New(
upb_DefBuilder* ctx, const char* prefix, int n,
- const UPB_DESC(EnumValueDescriptorProto) * const* protos, upb_EnumDef* e,
+ const UPB_DESC(EnumValueDescriptorProto*) const* protos,
+ const UPB_DESC(FeatureSet*) parent_features, upb_EnumDef* e,
bool* is_sorted);
const upb_EnumValueDef** _upb_EnumValueDefs_Sorted(const upb_EnumValueDef* v,
@@ -12503,16 +12588,19 @@
const upb_FieldDef* f);
// Allocate and initialize an array of |n| extensions (field defs).
-upb_FieldDef* _upb_Extensions_New(
- upb_DefBuilder* ctx, int n,
- const UPB_DESC(FieldDescriptorProto) * const* protos, const char* prefix,
- upb_MessageDef* m);
+upb_FieldDef* _upb_Extensions_New(upb_DefBuilder* ctx, int n,
+ const UPB_DESC(FieldDescriptorProto*)
+ const* protos,
+ const UPB_DESC(FeatureSet*) parent_features,
+ const char* prefix, upb_MessageDef* m);
// Allocate and initialize an array of |n| field defs.
-upb_FieldDef* _upb_FieldDefs_New(
- upb_DefBuilder* ctx, int n,
- const UPB_DESC(FieldDescriptorProto) * const* protos, const char* prefix,
- upb_MessageDef* m, bool* is_sorted);
+upb_FieldDef* _upb_FieldDefs_New(upb_DefBuilder* ctx, int n,
+ const UPB_DESC(FieldDescriptorProto*)
+ const* protos,
+ const UPB_DESC(FeatureSet*) parent_features,
+ const char* prefix, upb_MessageDef* m,
+ bool* is_sorted);
// Allocate and return a list of pointers to the |n| field defs in |ff|,
// sorted by field number.
@@ -12577,9 +12665,12 @@
void _upb_MessageDef_Resolve(upb_DefBuilder* ctx, upb_MessageDef* m);
// Allocate and initialize an array of |n| message defs.
-upb_MessageDef* _upb_MessageDefs_New(
- upb_DefBuilder* ctx, int n, const UPB_DESC(DescriptorProto) * const* protos,
- const upb_MessageDef* containing_type);
+upb_MessageDef* _upb_MessageDefs_New(upb_DefBuilder* ctx, int n,
+ const UPB_DESC(DescriptorProto*)
+ const* protos,
+ const UPB_DESC(FeatureSet*)
+ parent_features,
+ const upb_MessageDef* containing_type);
#ifdef __cplusplus
} /* extern "C" */
@@ -12601,9 +12692,11 @@
upb_ServiceDef* _upb_ServiceDef_At(const upb_ServiceDef* s, int i);
// Allocate and initialize an array of |n| service defs.
-upb_ServiceDef* _upb_ServiceDefs_New(
- upb_DefBuilder* ctx, int n,
- const UPB_DESC(ServiceDescriptorProto) * const* protos);
+upb_ServiceDef* _upb_ServiceDefs_New(upb_DefBuilder* ctx, int n,
+ const UPB_DESC(ServiceDescriptorProto*)
+ const* protos,
+ const UPB_DESC(FeatureSet*)
+ parent_features);
#ifdef __cplusplus
} /* extern "C" */
@@ -12612,6 +12705,20 @@
#endif /* UPB_REFLECTION_SERVICE_DEF_INTERNAL_H_ */
+#ifndef UPB_REFLECTION_UPB_EDITION_DEFAULTS_H_
+#define UPB_REFLECTION_UPB_EDITION_DEFAULTS_H_
+
+// This file contains the serialized FeatureSetDefaults object for
+// language-independent features and (possibly at some point) for upb-specific
+// features. This is used for feature resolution under Editions.
+// NOLINTBEGIN
+// clang-format off
+#define UPB_INTERNAL_UPB_EDITION_DEFAULTS "\n\021\022\014\010\001\020\002\030\002 \001(\0010\002\030\346\007\n\021\022\014\010\002\020\001\030\001 \002(\0010\001\030\347\007\n\021\022\014\010\001\020\001\030\001 \002(\0010\001\030\350\007 \346\007(\350\007"
+// clang-format on
+// NOLINTEND
+
+#endif // UPB_REFLECTION_UPB_EDITION_DEFAULTS_H_
+
#ifndef UPB_REFLECTION_DESC_STATE_INTERNAL_H_
#define UPB_REFLECTION_DESC_STATE_INTERNAL_H_
@@ -12684,7 +12791,7 @@
// Allocate and initialize an array of |n| reserved ranges owned by |e|.
upb_EnumReservedRange* _upb_EnumReservedRanges_New(
upb_DefBuilder* ctx, int n,
- const UPB_DESC(EnumDescriptorProto_EnumReservedRange) * const* protos,
+ const UPB_DESC(EnumDescriptorProto_EnumReservedRange*) const* protos,
const upb_EnumDef* e);
#ifdef __cplusplus
@@ -12732,8 +12839,8 @@
// Allocate and initialize an array of |n| extension ranges owned by |m|.
upb_ExtensionRange* _upb_ExtensionRanges_New(
upb_DefBuilder* ctx, int n,
- const UPB_DESC(DescriptorProto_ExtensionRange) * const* protos,
- const upb_MessageDef* m);
+ const UPB_DESC(DescriptorProto_ExtensionRange*) const* protos,
+ const UPB_DESC(FeatureSet*) parent_features, const upb_MessageDef* m);
#ifdef __cplusplus
} /* extern "C" */
@@ -12757,9 +12864,11 @@
const upb_FieldDef* f, const char* name, size_t size);
// Allocate and initialize an array of |n| oneof defs owned by |m|.
-upb_OneofDef* _upb_OneofDefs_New(
- upb_DefBuilder* ctx, int n,
- const UPB_DESC(OneofDescriptorProto) * const* protos, upb_MessageDef* m);
+upb_OneofDef* _upb_OneofDefs_New(upb_DefBuilder* ctx, int n,
+ const UPB_DESC(OneofDescriptorProto*)
+ const* protos,
+ const UPB_DESC(FeatureSet*) parent_features,
+ upb_MessageDef* m);
size_t _upb_OneofDefs_Finalize(upb_DefBuilder* ctx, upb_MessageDef* m);
@@ -12831,9 +12940,11 @@
upb_MethodDef* _upb_MethodDef_At(const upb_MethodDef* m, int i);
// Allocate and initialize an array of |n| method defs owned by |s|.
-upb_MethodDef* _upb_MethodDefs_New(
- upb_DefBuilder* ctx, int n,
- const UPB_DESC(MethodDescriptorProto) * const* protos, upb_ServiceDef* s);
+upb_MethodDef* _upb_MethodDefs_New(upb_DefBuilder* ctx, int n,
+ const UPB_DESC(MethodDescriptorProto*)
+ const* protos,
+ const UPB_DESC(FeatureSet*) parent_features,
+ upb_ServiceDef* s);
#ifdef __cplusplus
} /* extern "C" */
@@ -13038,6 +13149,7 @@
#undef UPB_GNUC_MIN
#undef UPB_DESCRIPTOR_UPB_H_FILENAME
#undef UPB_DESC
+#undef UPB_DESC_MINITABLE
#undef UPB_IS_GOOGLE3
#undef UPB_ATOMIC
#undef UPB_USE_C11_ATOMICS