diff --git a/benchmarks/descriptor_sv.proto b/benchmarks/descriptor_sv.proto index 434971ecd24e..539ed744203c 100644 --- a/benchmarks/descriptor_sv.proto +++ b/benchmarks/descriptor_sv.proto @@ -22,7 +22,6 @@ option java_package = "com.google.protobuf"; option java_outer_classname = "DescriptorProtos"; option csharp_namespace = "Google.Protobuf.Reflection"; option objc_class_prefix = "GPB"; -option cc_enable_arenas = true; // The protocol compiler can output a FileDescriptorSet containing the .proto // files it parses. @@ -34,13 +33,16 @@ message FileDescriptorSet { message FileDescriptorProto { optional string name = 1 [ctype = STRING_PIECE]; // file name, relative to root of source tree + optional string package = 2 [ctype = STRING_PIECE]; // e.g. "foo", "foo.bar", etc. // Names of files imported by this file. repeated string dependency = 3 [ctype = STRING_PIECE]; + // Indexes of the public imported files in the dependency list above. repeated int32 public_dependency = 10; + // Indexes of the weak imported files in the dependency list. // For Google-internal migration only. Do not use. repeated int32 weak_dependency = 11; @@ -50,7 +52,6 @@ message FileDescriptorProto { repeated EnumDescriptorProto enum_type = 5; repeated ServiceDescriptorProto service = 6; repeated FieldDescriptorProto extension = 7; - optional FileOptions options = 8; // This field contains optional information about the original source code. @@ -70,20 +71,17 @@ message DescriptorProto { repeated FieldDescriptorProto field = 2; repeated FieldDescriptorProto extension = 6; - repeated DescriptorProto nested_type = 3; repeated EnumDescriptorProto enum_type = 4; message ExtensionRange { optional int32 start = 1; // Inclusive. optional int32 end = 2; // Exclusive. - optional ExtensionRangeOptions options = 3; } - repeated ExtensionRange extension_range = 5; + repeated ExtensionRange extension_range = 5; repeated OneofDescriptorProto oneof_decl = 8; - optional MessageOptions options = 7; // Range of reserved tag numbers. Reserved tag numbers may not be used by @@ -93,7 +91,9 @@ message DescriptorProto { optional int32 start = 1; // Inclusive. optional int32 end = 2; // Exclusive. } + repeated ReservedRange reserved_range = 9; + // Reserved field names, which may not be used by fields in the same message. // A given name may only be reserved once. repeated string reserved_name = 10 [ctype = STRING_PIECE]; @@ -114,10 +114,12 @@ message FieldDescriptorProto { // Order is weird for historical reasons. TYPE_DOUBLE = 1; TYPE_FLOAT = 2; + // Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT64 if // negative values are likely. TYPE_INT64 = 3; TYPE_UINT64 = 4; + // Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT32 if // negative values are likely. TYPE_INT32 = 5; @@ -125,6 +127,7 @@ message FieldDescriptorProto { TYPE_FIXED32 = 7; TYPE_BOOL = 8; TYPE_STRING = 9; + // Tag-delimited aggregate. // Group type is deprecated and not supported in proto3. However, Proto3 // implementations should still be able to parse the group wire format and @@ -150,6 +153,7 @@ message FieldDescriptorProto { } optional string name = 1 [ctype = STRING_PIECE]; + optional int32 number = 3; optional Label label = 4; @@ -214,6 +218,7 @@ message FieldDescriptorProto { // Describes a oneof. message OneofDescriptorProto { optional string name = 1 [ctype = STRING_PIECE]; + optional OneofOptions options = 2; } @@ -222,7 +227,6 @@ message EnumDescriptorProto { optional string name = 1 [ctype = STRING_PIECE]; repeated EnumValueDescriptorProto value = 2; - optional EnumOptions options = 3; // Range of reserved numeric values. Reserved values may not be used by @@ -249,16 +253,16 @@ message EnumDescriptorProto { // Describes a value within an enum. message EnumValueDescriptorProto { optional string name = 1 [ctype = STRING_PIECE]; - optional int32 number = 2; + optional int32 number = 2; optional EnumValueOptions options = 3; } // Describes a service. message ServiceDescriptorProto { optional string name = 1 [ctype = STRING_PIECE]; - repeated MethodDescriptorProto method = 2; + repeated MethodDescriptorProto method = 2; optional ServiceOptions options = 3; } @@ -269,12 +273,14 @@ message MethodDescriptorProto { // Input and output type names. These are resolved in the same way as // FieldDescriptorProto.type_name, but must refer to a message type. optional string input_type = 2 [ctype = STRING_PIECE]; + optional string output_type = 3 [ctype = STRING_PIECE]; optional MethodOptions options = 4; // Identifies if client streams multiple client messages optional bool client_streaming = 5 [default = false]; + // Identifies if server streams multiple server messages optional bool server_streaming = 6 [default = false]; } @@ -351,6 +357,7 @@ message FileOptions { CODE_SIZE = 2; // Use ReflectionOps to implement these methods. LITE_RUNTIME = 3; // Generate code using MessageLite and the lite runtime. } + optional OptimizeMode optimize_for = 9 [default = SPEED]; // Sets the Go package where structs generated from this .proto will be @@ -371,8 +378,11 @@ message FileOptions { // these default to false. Old code which depends on generic services should // explicitly set them to true. optional bool cc_generic_services = 16 [default = false]; + optional bool java_generic_services = 17 [default = false]; + optional bool py_generic_services = 18 [default = false]; + optional bool php_generic_services = 42 [default = false]; // Is this file deprecated? @@ -499,14 +509,14 @@ message FieldOptions { // options below. This option is not yet implemented in the open source // release -- sorry, we'll try to include it in a future version! optional CType ctype = 1 [default = STRING]; + enum CType { // Default mode. STRING = 0; - CORD = 1; - STRING_PIECE = 2; } + // The packed option can be enabled for repeated primitive fields to enable // a more efficient representation on the wire. Rather than repeatedly // writing the tag and type for each element, the entire array is encoded as @@ -526,6 +536,7 @@ message FieldOptions { // This option is an enum to permit additional types to be added, e.g. // goog.math.Integer. optional JSType jstype = 6 [default = JS_NORMAL]; + enum JSType { // Use the default type. JS_NORMAL = 0; @@ -554,7 +565,6 @@ message FieldOptions { // call from multiple threads concurrently, while non-const methods continue // to require exclusive access. // - // // Note that implementations may choose not to check required fields within // a lazy sub-message. That is, calling IsInitialized() on the outer message // may return true even if the inner message has missing required fields. @@ -666,6 +676,7 @@ message MethodOptions { NO_SIDE_EFFECTS = 1; // implies idempotent IDEMPOTENT = 2; // idempotent, but may have side effects } + optional IdempotencyLevel idempotency_level = 34 [default = IDEMPOTENCY_UNKNOWN]; @@ -690,13 +701,16 @@ message UninterpretedOption { // "foo.(bar.baz).qux". message NamePart { optional string name_part = 1 [ctype = STRING_PIECE]; + optional bool is_extension = 2; } + repeated NamePart name = 2; // The value of the uninterpreted option, in whatever type the tokenizer // identified it as during parsing. Exactly one of these should be set. optional string identifier_value = 3 [ctype = STRING_PIECE]; + optional uint64 positive_int_value = 4; optional int64 negative_int_value = 5; optional double double_value = 6; @@ -754,6 +768,7 @@ message SourceCodeInfo { // ignore those that it doesn't understand, as more types of locations could // be recorded in the future. repeated Location location = 1; + message Location { // Identifies which part of the FileDescriptorProto was defined at this // location. @@ -835,7 +850,9 @@ message SourceCodeInfo { // // // ignored detached comments. optional string leading_comments = 3 [ctype = STRING_PIECE]; + optional string trailing_comments = 4 [ctype = STRING_PIECE]; + repeated string leading_detached_comments = 6 [ctype = STRING_PIECE]; } } @@ -847,6 +864,7 @@ message GeneratedCodeInfo { // An Annotation connects some span of text in generated code to an element // of its generating .proto file. repeated Annotation annotation = 1; + message Annotation { // Identifies the element in the original source .proto file. This field // is formatted the same as SourceCodeInfo.Location.path.