| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194 | syntax = "proto3";package basic_test;import "google/protobuf/wrappers.proto";import "google/protobuf/timestamp.proto";import "google/protobuf/duration.proto";import "google/protobuf/struct.proto";message Foo {  Bar bar = 1;  repeated Baz baz = 2;}message Bar {  string msg = 1;}message Baz {  string msg = 1;}message TestMessage {  int32 optional_int32 = 1;  int64 optional_int64 = 2;  uint32 optional_uint32 = 3;  uint64 optional_uint64 = 4;  bool optional_bool = 5;  float optional_float = 6;  double optional_double = 7;  string optional_string = 8;  bytes optional_bytes = 9;  TestMessage2 optional_msg = 10;  TestEnum optional_enum = 11;  repeated int32 repeated_int32 = 12;  repeated int64 repeated_int64 = 13;  repeated uint32 repeated_uint32 = 14;  repeated uint64 repeated_uint64 = 15;  repeated bool repeated_bool = 16;  repeated float repeated_float = 17;  repeated double repeated_double = 18;  repeated string repeated_string = 19;  repeated bytes repeated_bytes = 20;  repeated TestMessage2 repeated_msg = 21;  repeated TestEnum repeated_enum = 22;}message TestMessage2 {  int32 foo = 1;}enum TestEnum {  Default = 0;  A = 1;  B = 2;  C = 3;}message TestEmbeddedMessageParent {  TestEmbeddedMessageChild child_msg = 1;  int32 number = 2;  repeated TestEmbeddedMessageChild repeated_msg = 3;  repeated int32 repeated_number = 4;}message TestEmbeddedMessageChild {  TestMessage sub_child = 1;}message Recursive1 {  Recursive2 foo = 1;}message Recursive2 {  Recursive1 foo = 1;}message MapMessage {  map<string, int32> map_string_int32 = 1;  map<string, TestMessage2> map_string_msg = 2;  map<string, TestEnum> map_string_enum = 3;}message MapMessageWireEquiv {  repeated MapMessageWireEquiv_entry1 map_string_int32 = 1;  repeated MapMessageWireEquiv_entry2 map_string_msg = 2;}message MapMessageWireEquiv_entry1 {  string key = 1;  int32 value = 2;}message MapMessageWireEquiv_entry2 {  string key = 1;  TestMessage2 value = 2;}message OneofMessage {  oneof my_oneof {    string a = 1;    int32 b = 2;    TestMessage2 c = 3;    TestEnum d = 4;  }}message Outer {  map<int32, Inner> items = 1;}message Inner {}message Wrapper {  google.protobuf.DoubleValue double = 1;  google.protobuf.FloatValue float = 2;  google.protobuf.Int32Value int32 = 3;  google.protobuf.Int64Value int64 = 4;  google.protobuf.UInt32Value uint32 = 5;  google.protobuf.UInt64Value uint64 = 6;  google.protobuf.BoolValue bool = 7;  google.protobuf.StringValue string = 8;  google.protobuf.BytesValue bytes = 9;  string real_string = 100;  oneof a_oneof {    string string_in_oneof = 10;  }  // Repeated wrappers don't make sense, but we still need to make sure they  // work and don't crash.  repeated google.protobuf.DoubleValue repeated_double = 11;  repeated google.protobuf.FloatValue repeated_float = 12;  repeated google.protobuf.Int32Value repeated_int32 = 13;  repeated google.protobuf.Int64Value repeated_int64 = 14;  repeated google.protobuf.UInt32Value repeated_uint32 = 15;  repeated google.protobuf.UInt64Value repeated_uint64 = 16;  repeated google.protobuf.BoolValue repeated_bool = 17;  repeated google.protobuf.StringValue repeated_string = 18;  repeated google.protobuf.BytesValue repeated_bytes = 19;  // Wrappers as map keys don't make sense, but we still need to make sure they  // work and don't crash.  map<int32, google.protobuf.DoubleValue> map_double = 21;  map<int32, google.protobuf.FloatValue> map_float = 22;  map<int32, google.protobuf.Int32Value> map_int32 = 23;  map<int32, google.protobuf.Int64Value> map_int64 = 24;  map<int32, google.protobuf.UInt32Value> map_uint32 = 25;  map<int32, google.protobuf.UInt64Value> map_uint64 = 26;  map<int32, google.protobuf.BoolValue> map_bool = 27;  map<int32, google.protobuf.StringValue> map_string = 28;  map<int32, google.protobuf.BytesValue> map_bytes = 29;  // Wrappers in oneofs don't make sense, but we still need to make sure they  // work and don't crash.  oneof wrapper_oneof {    google.protobuf.DoubleValue oneof_double = 31;    google.protobuf.FloatValue oneof_float = 32;    google.protobuf.Int32Value oneof_int32 = 33;    google.protobuf.Int64Value oneof_int64 = 34;    google.protobuf.UInt32Value oneof_uint32 = 35;    google.protobuf.UInt64Value oneof_uint64 = 36;    google.protobuf.BoolValue oneof_bool = 37;    google.protobuf.StringValue oneof_string = 38;    google.protobuf.BytesValue oneof_bytes = 39;    string oneof_plain_string = 101;  }}message TimeMessage {  google.protobuf.Timestamp timestamp = 1;  google.protobuf.Duration duration = 2;}message Enumer {  TestEnum optional_enum = 1;  repeated TestEnum repeated_enum = 2;  string a_const = 3;  oneof a_oneof {    string str = 10;    TestEnum const = 11;  }}message MyRepeatedStruct {  repeated MyStruct structs = 1;}message MyStruct {  string string = 1;  google.protobuf.Struct struct = 2;}
 |