Roll-forward of: Add retention and target attributes to descriptor.proto
PiperOrigin-RevId: 503691684
diff --git a/ruby/ext/google/protobuf_c/ruby-upb.c b/ruby/ext/google/protobuf_c/ruby-upb.c
index f55f352..55ef065 100644
--- a/ruby/ext/google/protobuf_c/ruby-upb.c
+++ b/ruby/ext/google/protobuf_c/ruby-upb.c
@@ -1736,6 +1736,24 @@
},
};
+const upb_MiniTableEnum google_protobuf_FieldOptions_OptionRetention_enum_init = {
+ 64,
+ 0,
+ {
+ 0x7,
+ 0x0,
+ },
+};
+
+const upb_MiniTableEnum google_protobuf_FieldOptions_OptionTargetType_enum_init = {
+ 64,
+ 0,
+ {
+ 0x3ff,
+ 0x0,
+ },
+};
+
const upb_MiniTableEnum google_protobuf_MethodOptions_IdempotencyLevel_enum_init = {
64,
0,
@@ -1754,12 +1772,14 @@
},
};
-static const upb_MiniTableEnum *enums_layout[7] = {
+static const upb_MiniTableEnum *enums_layout[9] = {
&google_protobuf_FieldDescriptorProto_Type_enum_init,
&google_protobuf_FieldDescriptorProto_Label_enum_init,
&google_protobuf_FileOptions_OptimizeMode_enum_init,
&google_protobuf_FieldOptions_CType_enum_init,
&google_protobuf_FieldOptions_JSType_enum_init,
+ &google_protobuf_FieldOptions_OptionRetention_enum_init,
+ &google_protobuf_FieldOptions_OptionTargetType_enum_init,
&google_protobuf_MethodOptions_IdempotencyLevel_enum_init,
&google_protobuf_GeneratedCodeInfo_Annotation_Semantic_enum_init,
};
@@ -1769,7 +1789,7 @@
enums_layout,
NULL,
27,
- 7,
+ 9,
0,
};
diff --git a/ruby/ext/google/protobuf_c/ruby-upb.h b/ruby/ext/google/protobuf_c/ruby-upb.h
index 1849461..2a87817 100755
--- a/ruby/ext/google/protobuf_c/ruby-upb.h
+++ b/ruby/ext/google/protobuf_c/ruby-upb.h
@@ -3335,6 +3335,25 @@
} google_protobuf_FieldOptions_JSType;
typedef enum {
+ google_protobuf_FieldOptions_RETENTION_UNKNOWN = 0,
+ google_protobuf_FieldOptions_RETENTION_RUNTIME = 1,
+ google_protobuf_FieldOptions_RETENTION_SOURCE = 2
+} google_protobuf_FieldOptions_OptionRetention;
+
+typedef enum {
+ google_protobuf_FieldOptions_TARGET_TYPE_UNKNOWN = 0,
+ google_protobuf_FieldOptions_TARGET_TYPE_FILE = 1,
+ google_protobuf_FieldOptions_TARGET_TYPE_EXTENSION_RANGE = 2,
+ google_protobuf_FieldOptions_TARGET_TYPE_MESSAGE = 3,
+ google_protobuf_FieldOptions_TARGET_TYPE_FIELD = 4,
+ google_protobuf_FieldOptions_TARGET_TYPE_ONEOF = 5,
+ google_protobuf_FieldOptions_TARGET_TYPE_ENUM = 6,
+ google_protobuf_FieldOptions_TARGET_TYPE_ENUM_ENTRY = 7,
+ google_protobuf_FieldOptions_TARGET_TYPE_SERVICE = 8,
+ google_protobuf_FieldOptions_TARGET_TYPE_METHOD = 9
+} google_protobuf_FieldOptions_OptionTargetType;
+
+typedef enum {
google_protobuf_MethodOptions_IDEMPOTENCY_UNKNOWN = 0,
google_protobuf_MethodOptions_NO_SIDE_EFFECTS = 1,
google_protobuf_MethodOptions_IDEMPOTENT = 2
@@ -3352,6 +3371,8 @@
extern const upb_MiniTableEnum google_protobuf_FileOptions_OptimizeMode_enum_init;
extern const upb_MiniTableEnum google_protobuf_FieldOptions_CType_enum_init;
extern const upb_MiniTableEnum google_protobuf_FieldOptions_JSType_enum_init;
+extern const upb_MiniTableEnum google_protobuf_FieldOptions_OptionRetention_enum_init;
+extern const upb_MiniTableEnum google_protobuf_FieldOptions_OptionTargetType_enum_init;
extern const upb_MiniTableEnum google_protobuf_MethodOptions_IdempotencyLevel_enum_init;
extern const upb_MiniTableEnum google_protobuf_GeneratedCodeInfo_Annotation_Semantic_enum_init;
diff --git a/src/google/protobuf/descriptor.pb.cc b/src/google/protobuf/descriptor.pb.cc
index 43de95d..b10a8d4 100644
--- a/src/google/protobuf/descriptor.pb.cc
+++ b/src/google/protobuf/descriptor.pb.cc
@@ -586,7 +586,7 @@
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 GeneratedCodeInfoDefaultTypeInternal _GeneratedCodeInfo_default_instance_;
PROTOBUF_NAMESPACE_CLOSE
static ::_pb::Metadata file_level_metadata_google_2fprotobuf_2fdescriptor_2eproto[27];
-static const ::_pb::EnumDescriptor* file_level_enum_descriptors_google_2fprotobuf_2fdescriptor_2eproto[7];
+static const ::_pb::EnumDescriptor* file_level_enum_descriptors_google_2fprotobuf_2fdescriptor_2eproto[9];
static constexpr const ::_pb::ServiceDescriptor**
file_level_service_descriptors_google_2fprotobuf_2fdescriptor_2eproto = nullptr;
const ::uint32_t TableStruct_google_2fprotobuf_2fdescriptor_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(
@@ -1229,7 +1229,7 @@
"eld_conflicts\030\013 \001(\010B\002\030\001\022C\n\024uninterpreted"
"_option\030\347\007 \003(\0132$.google.protobuf.Uninter"
"pretedOption*\t\010\350\007\020\200\200\200\200\002J\004\010\004\020\005J\004\010\005\020\006J\004\010\006\020"
- "\007J\004\010\010\020\tJ\004\010\t\020\n\"\333\003\n\014FieldOptions\022:\n\005ctype\030"
+ "\007J\004\010\010\020\tJ\004\010\t\020\n\"\301\006\n\014FieldOptions\022:\n\005ctype\030"
"\001 \001(\0162#.google.protobuf.FieldOptions.CTy"
"pe:\006STRING\022\016\n\006packed\030\002 \001(\010\022\?\n\006jstype\030\006 \001"
"(\0162$.google.protobuf.FieldOptions.JSType"
@@ -1240,58 +1240,67 @@
"ption\030\347\007 \003(\0132$.google.protobuf.Uninterpr"
"etedOption\"/\n\005CType\022\n\n\006STRING\020\000\022\010\n\004CORD\020"
"\001\022\020\n\014STRING_PIECE\020\002\"5\n\006JSType\022\r\n\tJS_NORM"
- "AL\020\000\022\r\n\tJS_STRING\020\001\022\r\n\tJS_NUMBER\020\002*\t\010\350\007\020"
- "\200\200\200\200\002J\004\010\004\020\005\"^\n\014OneofOptions\022C\n\024uninterpr"
- "eted_option\030\347\007 \003(\0132$.google.protobuf.Uni"
- "nterpretedOption*\t\010\350\007\020\200\200\200\200\002\"\307\001\n\013EnumOpti"
- "ons\022\023\n\013allow_alias\030\002 \001(\010\022\031\n\ndeprecated\030\003"
- " \001(\010:\005false\0222\n&deprecated_legacy_json_fi"
- "eld_conflicts\030\006 \001(\010B\002\030\001\022C\n\024uninterpreted"
- "_option\030\347\007 \003(\0132$.google.protobuf.Uninter"
- "pretedOption*\t\010\350\007\020\200\200\200\200\002J\004\010\005\020\006\"}\n\020EnumVal"
- "ueOptions\022\031\n\ndeprecated\030\001 \001(\010:\005false\022C\n\024"
- "uninterpreted_option\030\347\007 \003(\0132$.google.pro"
- "tobuf.UninterpretedOption*\t\010\350\007\020\200\200\200\200\002\"{\n\016"
- "ServiceOptions\022\031\n\ndeprecated\030! \001(\010:\005fals"
- "e\022C\n\024uninterpreted_option\030\347\007 \003(\0132$.googl"
- "e.protobuf.UninterpretedOption*\t\010\350\007\020\200\200\200\200"
- "\002\"\255\002\n\rMethodOptions\022\031\n\ndeprecated\030! \001(\010:"
- "\005false\022_\n\021idempotency_level\030\" \001(\0162/.goog"
- "le.protobuf.MethodOptions.IdempotencyLev"
- "el:\023IDEMPOTENCY_UNKNOWN\022C\n\024uninterpreted"
- "_option\030\347\007 \003(\0132$.google.protobuf.Uninter"
- "pretedOption\"P\n\020IdempotencyLevel\022\027\n\023IDEM"
- "POTENCY_UNKNOWN\020\000\022\023\n\017NO_SIDE_EFFECTS\020\001\022\016"
- "\n\nIDEMPOTENT\020\002*\t\010\350\007\020\200\200\200\200\002\"\236\002\n\023Uninterpre"
- "tedOption\022;\n\004name\030\002 \003(\0132-.google.protobu"
- "f.UninterpretedOption.NamePart\022\030\n\020identi"
- "fier_value\030\003 \001(\t\022\032\n\022positive_int_value\030\004"
- " \001(\004\022\032\n\022negative_int_value\030\005 \001(\003\022\024\n\014doub"
- "le_value\030\006 \001(\001\022\024\n\014string_value\030\007 \001(\014\022\027\n\017"
- "aggregate_value\030\010 \001(\t\0323\n\010NamePart\022\021\n\tnam"
- "e_part\030\001 \002(\t\022\024\n\014is_extension\030\002 \002(\010\"\325\001\n\016S"
- "ourceCodeInfo\022:\n\010location\030\001 \003(\0132(.google"
- ".protobuf.SourceCodeInfo.Location\032\206\001\n\010Lo"
- "cation\022\020\n\004path\030\001 \003(\005B\002\020\001\022\020\n\004span\030\002 \003(\005B\002"
- "\020\001\022\030\n\020leading_comments\030\003 \001(\t\022\031\n\021trailing"
- "_comments\030\004 \001(\t\022!\n\031leading_detached_comm"
- "ents\030\006 \003(\t\"\234\002\n\021GeneratedCodeInfo\022A\n\nanno"
- "tation\030\001 \003(\0132-.google.protobuf.Generated"
- "CodeInfo.Annotation\032\303\001\n\nAnnotation\022\020\n\004pa"
- "th\030\001 \003(\005B\002\020\001\022\023\n\013source_file\030\002 \001(\t\022\r\n\005beg"
- "in\030\003 \001(\005\022\013\n\003end\030\004 \001(\005\022H\n\010semantic\030\005 \001(\0162"
- "6.google.protobuf.GeneratedCodeInfo.Anno"
- "tation.Semantic\"(\n\010Semantic\022\010\n\004NONE\020\000\022\007\n"
- "\003SET\020\001\022\t\n\005ALIAS\020\002B~\n\023com.google.protobuf"
- "B\020DescriptorProtosH\001Z-google.golang.org/"
- "protobuf/types/descriptorpb\370\001\001\242\002\003GPB\252\002\032G"
- "oogle.Protobuf.Reflection"
+ "AL\020\000\022\r\n\tJS_STRING\020\001\022\r\n\tJS_NUMBER\020\002\"U\n\017Op"
+ "tionRetention\022\025\n\021RETENTION_UNKNOWN\020\000\022\025\n\021"
+ "RETENTION_RUNTIME\020\001\022\024\n\020RETENTION_SOURCE\020"
+ "\002\"\214\002\n\020OptionTargetType\022\027\n\023TARGET_TYPE_UN"
+ "KNOWN\020\000\022\024\n\020TARGET_TYPE_FILE\020\001\022\037\n\033TARGET_"
+ "TYPE_EXTENSION_RANGE\020\002\022\027\n\023TARGET_TYPE_ME"
+ "SSAGE\020\003\022\025\n\021TARGET_TYPE_FIELD\020\004\022\025\n\021TARGET"
+ "_TYPE_ONEOF\020\005\022\024\n\020TARGET_TYPE_ENUM\020\006\022\032\n\026T"
+ "ARGET_TYPE_ENUM_ENTRY\020\007\022\027\n\023TARGET_TYPE_S"
+ "ERVICE\020\010\022\026\n\022TARGET_TYPE_METHOD\020\t*\t\010\350\007\020\200\200"
+ "\200\200\002J\004\010\004\020\005\"^\n\014OneofOptions\022C\n\024uninterpret"
+ "ed_option\030\347\007 \003(\0132$.google.protobuf.Unint"
+ "erpretedOption*\t\010\350\007\020\200\200\200\200\002\"\307\001\n\013EnumOption"
+ "s\022\023\n\013allow_alias\030\002 \001(\010\022\031\n\ndeprecated\030\003 \001"
+ "(\010:\005false\0222\n&deprecated_legacy_json_fiel"
+ "d_conflicts\030\006 \001(\010B\002\030\001\022C\n\024uninterpreted_o"
+ "ption\030\347\007 \003(\0132$.google.protobuf.Uninterpr"
+ "etedOption*\t\010\350\007\020\200\200\200\200\002J\004\010\005\020\006\"}\n\020EnumValue"
+ "Options\022\031\n\ndeprecated\030\001 \001(\010:\005false\022C\n\024un"
+ "interpreted_option\030\347\007 \003(\0132$.google.proto"
+ "buf.UninterpretedOption*\t\010\350\007\020\200\200\200\200\002\"{\n\016Se"
+ "rviceOptions\022\031\n\ndeprecated\030! \001(\010:\005false\022"
+ "C\n\024uninterpreted_option\030\347\007 \003(\0132$.google."
+ "protobuf.UninterpretedOption*\t\010\350\007\020\200\200\200\200\002\""
+ "\255\002\n\rMethodOptions\022\031\n\ndeprecated\030! \001(\010:\005f"
+ "alse\022_\n\021idempotency_level\030\" \001(\0162/.google"
+ ".protobuf.MethodOptions.IdempotencyLevel"
+ ":\023IDEMPOTENCY_UNKNOWN\022C\n\024uninterpreted_o"
+ "ption\030\347\007 \003(\0132$.google.protobuf.Uninterpr"
+ "etedOption\"P\n\020IdempotencyLevel\022\027\n\023IDEMPO"
+ "TENCY_UNKNOWN\020\000\022\023\n\017NO_SIDE_EFFECTS\020\001\022\016\n\n"
+ "IDEMPOTENT\020\002*\t\010\350\007\020\200\200\200\200\002\"\236\002\n\023Uninterprete"
+ "dOption\022;\n\004name\030\002 \003(\0132-.google.protobuf."
+ "UninterpretedOption.NamePart\022\030\n\020identifi"
+ "er_value\030\003 \001(\t\022\032\n\022positive_int_value\030\004 \001"
+ "(\004\022\032\n\022negative_int_value\030\005 \001(\003\022\024\n\014double"
+ "_value\030\006 \001(\001\022\024\n\014string_value\030\007 \001(\014\022\027\n\017ag"
+ "gregate_value\030\010 \001(\t\0323\n\010NamePart\022\021\n\tname_"
+ "part\030\001 \002(\t\022\024\n\014is_extension\030\002 \002(\010\"\325\001\n\016Sou"
+ "rceCodeInfo\022:\n\010location\030\001 \003(\0132(.google.p"
+ "rotobuf.SourceCodeInfo.Location\032\206\001\n\010Loca"
+ "tion\022\020\n\004path\030\001 \003(\005B\002\020\001\022\020\n\004span\030\002 \003(\005B\002\020\001"
+ "\022\030\n\020leading_comments\030\003 \001(\t\022\031\n\021trailing_c"
+ "omments\030\004 \001(\t\022!\n\031leading_detached_commen"
+ "ts\030\006 \003(\t\"\234\002\n\021GeneratedCodeInfo\022A\n\nannota"
+ "tion\030\001 \003(\0132-.google.protobuf.GeneratedCo"
+ "deInfo.Annotation\032\303\001\n\nAnnotation\022\020\n\004path"
+ "\030\001 \003(\005B\002\020\001\022\023\n\013source_file\030\002 \001(\t\022\r\n\005begin"
+ "\030\003 \001(\005\022\013\n\003end\030\004 \001(\005\022H\n\010semantic\030\005 \001(\01626."
+ "google.protobuf.GeneratedCodeInfo.Annota"
+ "tion.Semantic\"(\n\010Semantic\022\010\n\004NONE\020\000\022\007\n\003S"
+ "ET\020\001\022\t\n\005ALIAS\020\002B~\n\023com.google.protobufB\020"
+ "DescriptorProtosH\001Z-google.golang.org/pr"
+ "otobuf/types/descriptorpb\370\001\001\242\002\003GPB\252\002\032Goo"
+ "gle.Protobuf.Reflection"
};
static ::absl::once_flag descriptor_table_google_2fprotobuf_2fdescriptor_2eproto_once;
const ::_pbi::DescriptorTable descriptor_table_google_2fprotobuf_2fdescriptor_2eproto = {
false,
false,
- 6345,
+ 6703,
descriptor_table_protodef_google_2fprotobuf_2fdescriptor_2eproto,
"google/protobuf/descriptor.proto",
&descriptor_table_google_2fprotobuf_2fdescriptor_2eproto_once,
@@ -1484,10 +1493,76 @@
#endif // (__cplusplus < 201703) &&
// (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))
-const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* MethodOptions_IdempotencyLevel_descriptor() {
+const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* FieldOptions_OptionRetention_descriptor() {
::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_google_2fprotobuf_2fdescriptor_2eproto);
return file_level_enum_descriptors_google_2fprotobuf_2fdescriptor_2eproto[5];
}
+bool FieldOptions_OptionRetention_IsValid(int value) {
+ switch (value) {
+ case 0:
+ case 1:
+ case 2:
+ return true;
+ default:
+ return false;
+ }
+}
+#if (__cplusplus < 201703) && \
+ (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))
+
+constexpr FieldOptions_OptionRetention FieldOptions::RETENTION_UNKNOWN;
+constexpr FieldOptions_OptionRetention FieldOptions::RETENTION_RUNTIME;
+constexpr FieldOptions_OptionRetention FieldOptions::RETENTION_SOURCE;
+constexpr FieldOptions_OptionRetention FieldOptions::OptionRetention_MIN;
+constexpr FieldOptions_OptionRetention FieldOptions::OptionRetention_MAX;
+constexpr int FieldOptions::OptionRetention_ARRAYSIZE;
+
+#endif // (__cplusplus < 201703) &&
+ // (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))
+const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* FieldOptions_OptionTargetType_descriptor() {
+ ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_google_2fprotobuf_2fdescriptor_2eproto);
+ return file_level_enum_descriptors_google_2fprotobuf_2fdescriptor_2eproto[6];
+}
+bool FieldOptions_OptionTargetType_IsValid(int value) {
+ switch (value) {
+ case 0:
+ case 1:
+ case 2:
+ case 3:
+ case 4:
+ case 5:
+ case 6:
+ case 7:
+ case 8:
+ case 9:
+ return true;
+ default:
+ return false;
+ }
+}
+#if (__cplusplus < 201703) && \
+ (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))
+
+constexpr FieldOptions_OptionTargetType FieldOptions::TARGET_TYPE_UNKNOWN;
+constexpr FieldOptions_OptionTargetType FieldOptions::TARGET_TYPE_FILE;
+constexpr FieldOptions_OptionTargetType FieldOptions::TARGET_TYPE_EXTENSION_RANGE;
+constexpr FieldOptions_OptionTargetType FieldOptions::TARGET_TYPE_MESSAGE;
+constexpr FieldOptions_OptionTargetType FieldOptions::TARGET_TYPE_FIELD;
+constexpr FieldOptions_OptionTargetType FieldOptions::TARGET_TYPE_ONEOF;
+constexpr FieldOptions_OptionTargetType FieldOptions::TARGET_TYPE_ENUM;
+constexpr FieldOptions_OptionTargetType FieldOptions::TARGET_TYPE_ENUM_ENTRY;
+constexpr FieldOptions_OptionTargetType FieldOptions::TARGET_TYPE_SERVICE;
+constexpr FieldOptions_OptionTargetType FieldOptions::TARGET_TYPE_METHOD;
+constexpr FieldOptions_OptionTargetType FieldOptions::OptionTargetType_MIN;
+constexpr FieldOptions_OptionTargetType FieldOptions::OptionTargetType_MAX;
+constexpr int FieldOptions::OptionTargetType_ARRAYSIZE;
+
+#endif // (__cplusplus < 201703) &&
+ // (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))
+const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* MethodOptions_IdempotencyLevel_descriptor() {
+ ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_google_2fprotobuf_2fdescriptor_2eproto);
+ return file_level_enum_descriptors_google_2fprotobuf_2fdescriptor_2eproto[7];
+}
bool MethodOptions_IdempotencyLevel_IsValid(int value) {
switch (value) {
case 0:
@@ -1512,7 +1587,7 @@
// (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))
const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* GeneratedCodeInfo_Annotation_Semantic_descriptor() {
::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_google_2fprotobuf_2fdescriptor_2eproto);
- return file_level_enum_descriptors_google_2fprotobuf_2fdescriptor_2eproto[6];
+ return file_level_enum_descriptors_google_2fprotobuf_2fdescriptor_2eproto[8];
}
bool GeneratedCodeInfo_Annotation_Semantic_IsValid(int value) {
switch (value) {
diff --git a/src/google/protobuf/descriptor.pb.h b/src/google/protobuf/descriptor.pb.h
index 328c4e3..8963b4e 100644
--- a/src/google/protobuf/descriptor.pb.h
+++ b/src/google/protobuf/descriptor.pb.h
@@ -350,6 +350,71 @@
return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum<FieldOptions_JSType>(
FieldOptions_JSType_descriptor(), name, value);
}
+enum FieldOptions_OptionRetention : int {
+ FieldOptions_OptionRetention_RETENTION_UNKNOWN = 0,
+ FieldOptions_OptionRetention_RETENTION_RUNTIME = 1,
+ FieldOptions_OptionRetention_RETENTION_SOURCE = 2,
+};
+
+PROTOBUF_EXPORT bool FieldOptions_OptionRetention_IsValid(int value);
+constexpr FieldOptions_OptionRetention FieldOptions_OptionRetention_OptionRetention_MIN = static_cast<FieldOptions_OptionRetention>(0);
+constexpr FieldOptions_OptionRetention FieldOptions_OptionRetention_OptionRetention_MAX = static_cast<FieldOptions_OptionRetention>(2);
+constexpr int FieldOptions_OptionRetention_OptionRetention_ARRAYSIZE = 2 + 1;
+PROTOBUF_EXPORT const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor*
+FieldOptions_OptionRetention_descriptor();
+template <typename T>
+const std::string& FieldOptions_OptionRetention_Name(T value) {
+ static_assert(std::is_same<T, FieldOptions_OptionRetention>::value ||
+ std::is_integral<T>::value,
+ "Incorrect type passed to OptionRetention_Name().");
+ return FieldOptions_OptionRetention_Name(static_cast<FieldOptions_OptionRetention>(value));
+}
+template <>
+inline const std::string& FieldOptions_OptionRetention_Name(FieldOptions_OptionRetention value) {
+ return ::PROTOBUF_NAMESPACE_ID::internal::NameOfDenseEnum<FieldOptions_OptionRetention_descriptor,
+ 0, 2>(
+ static_cast<int>(value));
+}
+inline bool FieldOptions_OptionRetention_Parse(absl::string_view name, FieldOptions_OptionRetention* value) {
+ return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum<FieldOptions_OptionRetention>(
+ FieldOptions_OptionRetention_descriptor(), name, value);
+}
+enum FieldOptions_OptionTargetType : int {
+ FieldOptions_OptionTargetType_TARGET_TYPE_UNKNOWN = 0,
+ FieldOptions_OptionTargetType_TARGET_TYPE_FILE = 1,
+ FieldOptions_OptionTargetType_TARGET_TYPE_EXTENSION_RANGE = 2,
+ FieldOptions_OptionTargetType_TARGET_TYPE_MESSAGE = 3,
+ FieldOptions_OptionTargetType_TARGET_TYPE_FIELD = 4,
+ FieldOptions_OptionTargetType_TARGET_TYPE_ONEOF = 5,
+ FieldOptions_OptionTargetType_TARGET_TYPE_ENUM = 6,
+ FieldOptions_OptionTargetType_TARGET_TYPE_ENUM_ENTRY = 7,
+ FieldOptions_OptionTargetType_TARGET_TYPE_SERVICE = 8,
+ FieldOptions_OptionTargetType_TARGET_TYPE_METHOD = 9,
+};
+
+PROTOBUF_EXPORT bool FieldOptions_OptionTargetType_IsValid(int value);
+constexpr FieldOptions_OptionTargetType FieldOptions_OptionTargetType_OptionTargetType_MIN = static_cast<FieldOptions_OptionTargetType>(0);
+constexpr FieldOptions_OptionTargetType FieldOptions_OptionTargetType_OptionTargetType_MAX = static_cast<FieldOptions_OptionTargetType>(9);
+constexpr int FieldOptions_OptionTargetType_OptionTargetType_ARRAYSIZE = 9 + 1;
+PROTOBUF_EXPORT const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor*
+FieldOptions_OptionTargetType_descriptor();
+template <typename T>
+const std::string& FieldOptions_OptionTargetType_Name(T value) {
+ static_assert(std::is_same<T, FieldOptions_OptionTargetType>::value ||
+ std::is_integral<T>::value,
+ "Incorrect type passed to OptionTargetType_Name().");
+ return FieldOptions_OptionTargetType_Name(static_cast<FieldOptions_OptionTargetType>(value));
+}
+template <>
+inline const std::string& FieldOptions_OptionTargetType_Name(FieldOptions_OptionTargetType value) {
+ return ::PROTOBUF_NAMESPACE_ID::internal::NameOfDenseEnum<FieldOptions_OptionTargetType_descriptor,
+ 0, 9>(
+ static_cast<int>(value));
+}
+inline bool FieldOptions_OptionTargetType_Parse(absl::string_view name, FieldOptions_OptionTargetType* value) {
+ return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum<FieldOptions_OptionTargetType>(
+ FieldOptions_OptionTargetType_descriptor(), name, value);
+}
enum MethodOptions_IdempotencyLevel : int {
MethodOptions_IdempotencyLevel_IDEMPOTENCY_UNKNOWN = 0,
MethodOptions_IdempotencyLevel_NO_SIDE_EFFECTS = 1,
@@ -4716,6 +4781,55 @@
return FieldOptions_JSType_Parse(name, value);
}
+ using OptionRetention = FieldOptions_OptionRetention;
+ static constexpr OptionRetention RETENTION_UNKNOWN = FieldOptions_OptionRetention_RETENTION_UNKNOWN;
+ static constexpr OptionRetention RETENTION_RUNTIME = FieldOptions_OptionRetention_RETENTION_RUNTIME;
+ static constexpr OptionRetention RETENTION_SOURCE = FieldOptions_OptionRetention_RETENTION_SOURCE;
+ static inline bool OptionRetention_IsValid(int value) {
+ return FieldOptions_OptionRetention_IsValid(value);
+ }
+ static constexpr OptionRetention OptionRetention_MIN = FieldOptions_OptionRetention_OptionRetention_MIN;
+ static constexpr OptionRetention OptionRetention_MAX = FieldOptions_OptionRetention_OptionRetention_MAX;
+ static constexpr int OptionRetention_ARRAYSIZE = FieldOptions_OptionRetention_OptionRetention_ARRAYSIZE;
+ static inline const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* OptionRetention_descriptor() {
+ return FieldOptions_OptionRetention_descriptor();
+ }
+ template <typename T>
+ static inline const std::string& OptionRetention_Name(T value) {
+ return FieldOptions_OptionRetention_Name(value);
+ }
+ static inline bool OptionRetention_Parse(absl::string_view name, OptionRetention* value) {
+ return FieldOptions_OptionRetention_Parse(name, value);
+ }
+
+ using OptionTargetType = FieldOptions_OptionTargetType;
+ static constexpr OptionTargetType TARGET_TYPE_UNKNOWN = FieldOptions_OptionTargetType_TARGET_TYPE_UNKNOWN;
+ static constexpr OptionTargetType TARGET_TYPE_FILE = FieldOptions_OptionTargetType_TARGET_TYPE_FILE;
+ static constexpr OptionTargetType TARGET_TYPE_EXTENSION_RANGE = FieldOptions_OptionTargetType_TARGET_TYPE_EXTENSION_RANGE;
+ static constexpr OptionTargetType TARGET_TYPE_MESSAGE = FieldOptions_OptionTargetType_TARGET_TYPE_MESSAGE;
+ static constexpr OptionTargetType TARGET_TYPE_FIELD = FieldOptions_OptionTargetType_TARGET_TYPE_FIELD;
+ static constexpr OptionTargetType TARGET_TYPE_ONEOF = FieldOptions_OptionTargetType_TARGET_TYPE_ONEOF;
+ static constexpr OptionTargetType TARGET_TYPE_ENUM = FieldOptions_OptionTargetType_TARGET_TYPE_ENUM;
+ static constexpr OptionTargetType TARGET_TYPE_ENUM_ENTRY = FieldOptions_OptionTargetType_TARGET_TYPE_ENUM_ENTRY;
+ static constexpr OptionTargetType TARGET_TYPE_SERVICE = FieldOptions_OptionTargetType_TARGET_TYPE_SERVICE;
+ static constexpr OptionTargetType TARGET_TYPE_METHOD = FieldOptions_OptionTargetType_TARGET_TYPE_METHOD;
+ static inline bool OptionTargetType_IsValid(int value) {
+ return FieldOptions_OptionTargetType_IsValid(value);
+ }
+ static constexpr OptionTargetType OptionTargetType_MIN = FieldOptions_OptionTargetType_OptionTargetType_MIN;
+ static constexpr OptionTargetType OptionTargetType_MAX = FieldOptions_OptionTargetType_OptionTargetType_MAX;
+ static constexpr int OptionTargetType_ARRAYSIZE = FieldOptions_OptionTargetType_OptionTargetType_ARRAYSIZE;
+ static inline const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* OptionTargetType_descriptor() {
+ return FieldOptions_OptionTargetType_descriptor();
+ }
+ template <typename T>
+ static inline const std::string& OptionTargetType_Name(T value) {
+ return FieldOptions_OptionTargetType_Name(value);
+ }
+ static inline bool OptionTargetType_Parse(absl::string_view name, OptionTargetType* value) {
+ return FieldOptions_OptionTargetType_Parse(name, value);
+ }
+
// accessors -------------------------------------------------------
enum : int {
@@ -14054,6 +14168,18 @@
return ::PROTOBUF_NAMESPACE_ID::FieldOptions_JSType_descriptor();
}
template <>
+struct is_proto_enum<::PROTOBUF_NAMESPACE_ID::FieldOptions_OptionRetention> : std::true_type {};
+template <>
+inline const EnumDescriptor* GetEnumDescriptor<::PROTOBUF_NAMESPACE_ID::FieldOptions_OptionRetention>() {
+ return ::PROTOBUF_NAMESPACE_ID::FieldOptions_OptionRetention_descriptor();
+}
+template <>
+struct is_proto_enum<::PROTOBUF_NAMESPACE_ID::FieldOptions_OptionTargetType> : std::true_type {};
+template <>
+inline const EnumDescriptor* GetEnumDescriptor<::PROTOBUF_NAMESPACE_ID::FieldOptions_OptionTargetType>() {
+ return ::PROTOBUF_NAMESPACE_ID::FieldOptions_OptionTargetType_descriptor();
+}
+template <>
struct is_proto_enum<::PROTOBUF_NAMESPACE_ID::MethodOptions_IdempotencyLevel> : std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor<::PROTOBUF_NAMESPACE_ID::MethodOptions_IdempotencyLevel>() {
diff --git a/src/google/protobuf/descriptor.proto b/src/google/protobuf/descriptor.proto
index da8225f..b6108d0 100644
--- a/src/google/protobuf/descriptor.proto
+++ b/src/google/protobuf/descriptor.proto
@@ -631,6 +631,32 @@
// formats, e.g. when the field contains sensitive credentials.
optional bool debug_redact = 16 [default = false];
+ // If set to RETENTION_SOURCE, the option will be omitted from the binary.
+ // Note: as of January 2023, support for this is in progress and does not yet
+ // have an effect (b/264593489).
+ enum OptionRetention {
+ RETENTION_UNKNOWN = 0;
+ RETENTION_RUNTIME = 1;
+ RETENTION_SOURCE = 2;
+ }
+
+ // This indicates the types of entities that the field may apply to when used
+ // as an option. If it is unset, then the field may be freely used as an
+ // option on any kind of entity. Note: as of January 2023, support for this is
+ // in progress and does not yet have an effect (b/264593489).
+ enum OptionTargetType {
+ TARGET_TYPE_UNKNOWN = 0;
+ TARGET_TYPE_FILE = 1;
+ TARGET_TYPE_EXTENSION_RANGE = 2;
+ TARGET_TYPE_MESSAGE = 3;
+ TARGET_TYPE_FIELD = 4;
+ TARGET_TYPE_ONEOF = 5;
+ TARGET_TYPE_ENUM = 6;
+ TARGET_TYPE_ENUM_ENTRY = 7;
+ TARGET_TYPE_SERVICE = 8;
+ TARGET_TYPE_METHOD = 9;
+ }
+
// The parser stores options it doesn't recognize here. See above.
repeated UninterpretedOption uninterpreted_option = 999;