|
|
|
syntax = "proto3";
|
|
|
|
|
|
|
|
import 'google/protobuf/any.proto';
|
|
|
|
import 'google/protobuf/wrappers.proto';
|
|
|
|
import 'google/protobuf/struct.proto';
|
|
|
|
import 'proto/test_include.proto';
|
|
|
|
import 'proto/test_no_namespace.proto';
|
|
|
|
import 'proto/test_php_namespace.proto';
|
|
|
|
import 'proto/test_empty_php_namespace.proto';
|
|
|
|
import 'proto/test_prefix.proto';
|
|
|
|
|
|
|
|
package foo;
|
|
|
|
|
|
|
|
message TestMessage {
|
|
|
|
// Singular
|
|
|
|
int32 optional_int32 = 1;
|
|
|
|
int64 optional_int64 = 2;
|
|
|
|
uint32 optional_uint32 = 3;
|
|
|
|
uint64 optional_uint64 = 4;
|
|
|
|
sint32 optional_sint32 = 5;
|
|
|
|
sint64 optional_sint64 = 6;
|
|
|
|
fixed32 optional_fixed32 = 7;
|
|
|
|
fixed64 optional_fixed64 = 8;
|
|
|
|
sfixed32 optional_sfixed32 = 9;
|
|
|
|
sfixed64 optional_sfixed64 = 10;
|
|
|
|
float optional_float = 11;
|
|
|
|
double optional_double = 12;
|
|
|
|
bool optional_bool = 13;
|
|
|
|
string optional_string = 14;
|
|
|
|
bytes optional_bytes = 15;
|
|
|
|
|
|
|
|
TestEnum optional_enum = 16;
|
|
|
|
Sub optional_message = 17;
|
|
|
|
bar.TestInclude optional_included_message = 18;
|
|
|
|
TestMessage recursive = 19;
|
|
|
|
|
|
|
|
// True optional
|
|
|
|
optional int32 true_optional_int32 = 201;
|
|
|
|
optional int64 true_optional_int64 = 202;
|
|
|
|
optional uint32 true_optional_uint32 = 203;
|
|
|
|
optional uint64 true_optional_uint64 = 204;
|
|
|
|
optional sint32 true_optional_sint32 = 205;
|
|
|
|
optional sint64 true_optional_sint64 = 206;
|
|
|
|
optional fixed32 true_optional_fixed32 = 207;
|
|
|
|
optional fixed64 true_optional_fixed64 = 208;
|
|
|
|
optional sfixed32 true_optional_sfixed32 = 209;
|
|
|
|
optional sfixed64 true_optional_sfixed64 = 210;
|
|
|
|
optional float true_optional_float = 211;
|
|
|
|
optional double true_optional_double = 212;
|
|
|
|
optional bool true_optional_bool = 213;
|
|
|
|
optional string true_optional_string = 214;
|
|
|
|
optional bytes true_optional_bytes = 215;
|
|
|
|
|
|
|
|
optional TestEnum true_optional_enum = 216;
|
|
|
|
optional Sub true_optional_message = 217;
|
|
|
|
optional bar.TestInclude true_optional_included_message = 218;
|
|
|
|
|
|
|
|
// Repeated
|
|
|
|
repeated int32 repeated_int32 = 31;
|
|
|
|
repeated int64 repeated_int64 = 32;
|
|
|
|
repeated uint32 repeated_uint32 = 33;
|
|
|
|
repeated uint64 repeated_uint64 = 34;
|
|
|
|
repeated sint32 repeated_sint32 = 35;
|
|
|
|
repeated sint64 repeated_sint64 = 36;
|
|
|
|
repeated fixed32 repeated_fixed32 = 37;
|
|
|
|
repeated fixed64 repeated_fixed64 = 38;
|
|
|
|
repeated sfixed32 repeated_sfixed32 = 39;
|
|
|
|
repeated sfixed64 repeated_sfixed64 = 40;
|
|
|
|
repeated float repeated_float = 41;
|
|
|
|
repeated double repeated_double = 42;
|
|
|
|
repeated bool repeated_bool = 43;
|
|
|
|
repeated string repeated_string = 44;
|
|
|
|
repeated bytes repeated_bytes = 45;
|
|
|
|
|
|
|
|
repeated TestEnum repeated_enum = 46;
|
|
|
|
repeated Sub repeated_message = 47;
|
|
|
|
repeated TestMessage repeated_recursive = 48;
|
|
|
|
|
|
|
|
oneof my_oneof {
|
|
|
|
int32 oneof_int32 = 51;
|
|
|
|
int64 oneof_int64 = 52;
|
|
|
|
uint32 oneof_uint32 = 53;
|
|
|
|
uint64 oneof_uint64 = 54;
|
|
|
|
uint32 oneof_sint32 = 55;
|
|
|
|
uint64 oneof_sint64 = 56;
|
|
|
|
uint32 oneof_fixed32 = 57;
|
|
|
|
uint64 oneof_fixed64 = 58;
|
|
|
|
uint32 oneof_sfixed32 = 59;
|
|
|
|
uint64 oneof_sfixed64 = 60;
|
|
|
|
double oneof_double = 61;
|
|
|
|
float oneof_float = 62;
|
|
|
|
bool oneof_bool = 63;
|
|
|
|
string oneof_string = 64;
|
|
|
|
bytes oneof_bytes = 65;
|
|
|
|
TestEnum oneof_enum = 66;
|
|
|
|
Sub oneof_message = 67;
|
|
|
|
}
|
|
|
|
|
|
|
|
map<int32, int32> map_int32_int32 = 71;
|
|
|
|
map<int64, int64> map_int64_int64 = 72;
|
|
|
|
map<uint32, uint32> map_uint32_uint32 = 73;
|
|
|
|
map<uint64, uint64> map_uint64_uint64 = 74;
|
|
|
|
map<sint32, sint32> map_sint32_sint32 = 75;
|
|
|
|
map<sint64, sint64> map_sint64_sint64 = 76;
|
|
|
|
map<fixed32, fixed32> map_fixed32_fixed32 = 77;
|
|
|
|
map<fixed64, fixed64> map_fixed64_fixed64 = 78;
|
|
|
|
map<sfixed32, sfixed32> map_sfixed32_sfixed32 = 79;
|
|
|
|
map<sfixed64, sfixed64> map_sfixed64_sfixed64 = 80;
|
|
|
|
map<int32, float> map_int32_float = 81;
|
|
|
|
map<int32, double> map_int32_double = 82;
|
|
|
|
map<bool, bool> map_bool_bool = 83;
|
|
|
|
map<string, string> map_string_string = 84;
|
|
|
|
map<int32, bytes> map_int32_bytes = 85;
|
|
|
|
map<int32, TestEnum> map_int32_enum = 86;
|
|
|
|
map<int32, Sub> map_int32_message = 87;
|
|
|
|
|
|
|
|
map<int32, TestMessage> map_recursive = 88;
|
|
|
|
|
|
|
|
message Sub {
|
|
|
|
int32 a = 1;
|
|
|
|
repeated int32 b = 2;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Reserved for non-existing field test.
|
|
|
|
// int32 non_exist = 89;
|
|
|
|
|
|
|
|
NoNamespaceMessage optional_no_namespace_message = 91;
|
|
|
|
NoNamespaceEnum optional_no_namespace_enum = 92;
|
|
|
|
repeated NoNamespaceMessage repeated_no_namespace_message = 93;
|
|
|
|
repeated NoNamespaceEnum repeated_no_namespace_enum = 94;
|
|
|
|
|
|
|
|
enum NestedEnum {
|
|
|
|
ZERO = 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
NestedEnum optional_nested_enum = 101;
|
|
|
|
|
|
|
|
// Test prefix for reserved words.
|
|
|
|
message Empty {
|
|
|
|
int32 a = 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
reserved 111;
|
|
|
|
|
|
|
|
// Test map with missing message value
|
|
|
|
map<string, TestMessage> map_string_message = 121;
|
|
|
|
map<string, google.protobuf.Any> map_string_any = 122;
|
|
|
|
map<string, google.protobuf.ListValue> map_string_list = 123;
|
|
|
|
map<string, google.protobuf.Struct> map_string_struct = 124;
|
|
|
|
|
|
|
|
// deprecated field
|
|
|
|
int32 deprecated_optional_int32 = 125 [deprecated=true];
|
|
|
|
}
|
|
|
|
|
|
|
|
enum TestEnum {
|
|
|
|
ZERO = 0;
|
|
|
|
ONE = 1;
|
|
|
|
TWO = 2;
|
|
|
|
ECHO = 3; // Test reserved name.
|
|
|
|
}
|
|
|
|
|
|
|
|
// Test prefix for reserved words.
|
|
|
|
message Empty {
|
|
|
|
int32 a = 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
message ARRAY {
|
|
|
|
int32 a = 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
message TestPackedMessage {
|
|
|
|
repeated int32 repeated_int32 = 90 [packed = true];
|
|
|
|
repeated int64 repeated_int64 = 91 [packed = true];
|
|
|
|
repeated uint32 repeated_uint32 = 92 [packed = true];
|
|
|
|
repeated uint64 repeated_uint64 = 93 [packed = true];
|
|
|
|
repeated sint32 repeated_sint32 = 94 [packed = true];
|
|
|
|
repeated sint64 repeated_sint64 = 95 [packed = true];
|
|
|
|
repeated fixed32 repeated_fixed32 = 96 [packed = true];
|
|
|
|
repeated fixed64 repeated_fixed64 = 97 [packed = true];
|
|
|
|
repeated sfixed32 repeated_sfixed32 = 98 [packed = true];
|
|
|
|
repeated sfixed64 repeated_sfixed64 = 99 [packed = true];
|
|
|
|
repeated float repeated_float = 100 [packed = true];
|
|
|
|
repeated double repeated_double = 101 [packed = true];
|
|
|
|
repeated bool repeated_bool = 102 [packed = true];
|
|
|
|
repeated TestEnum repeated_enum = 103 [packed = true];
|
|
|
|
}
|
|
|
|
|
|
|
|
// Need to be in sync with TestPackedMessage.
|
|
|
|
message TestUnpackedMessage {
|
|
|
|
repeated int32 repeated_int32 = 90 [packed = false];
|
|
|
|
repeated int64 repeated_int64 = 91 [packed = false];
|
|
|
|
repeated uint32 repeated_uint32 = 92 [packed = false];
|
|
|
|
repeated uint64 repeated_uint64 = 93 [packed = false];
|
|
|
|
repeated sint32 repeated_sint32 = 94 [packed = false];
|
|
|
|
repeated sint64 repeated_sint64 = 95 [packed = false];
|
|
|
|
repeated fixed32 repeated_fixed32 = 96 [packed = false];
|
|
|
|
repeated fixed64 repeated_fixed64 = 97 [packed = false];
|
|
|
|
repeated sfixed32 repeated_sfixed32 = 98 [packed = false];
|
|
|
|
repeated sfixed64 repeated_sfixed64 = 99 [packed = false];
|
|
|
|
repeated float repeated_float = 100 [packed = false];
|
|
|
|
repeated double repeated_double = 101 [packed = false];
|
|
|
|
repeated bool repeated_bool = 102 [packed = false];
|
|
|
|
repeated TestEnum repeated_enum = 103 [packed = false];
|
|
|
|
}
|
|
|
|
|
|
|
|
// /**/@<>&\{
|
|
|
|
message TestPhpDoc {
|
|
|
|
int32 a = 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
message TestIncludePrefixMessage {
|
|
|
|
TestPrefix prefix_message = 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
message TestIncludeNamespaceMessage {
|
|
|
|
TestNamespace namespace_message = 1;
|
|
|
|
TestEmptyNamespace empty_namespace_message = 2;
|
|
|
|
}
|
|
|
|
|
|
|
|
// This will cause upb fields not ordered by the order in the generated code.
|
|
|
|
message TestRandomFieldOrder {
|
|
|
|
int64 tag13 = 150;
|
|
|
|
string tag14 = 160;
|
|
|
|
}
|
|
|
|
|
|
|
|
message TestLargeFieldNumber {
|
|
|
|
int32 large_field_number = 536870911;
|
|
|
|
}
|
|
|
|
|
|
|
|
message TestReverseFieldOrder {
|
|
|
|
repeated int32 a = 2;
|
|
|
|
string b = 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
message testLowerCaseMessage {
|
|
|
|
}
|
|
|
|
|
|
|
|
enum testLowerCaseEnum {
|
|
|
|
VALUE = 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
message TestAny {
|
|
|
|
google.protobuf.Any any = 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
message TestInt32Value {
|
|
|
|
google.protobuf.Int32Value field = 1;
|
|
|
|
repeated google.protobuf.Int32Value repeated_field = 2;
|
|
|
|
oneof oneof_fields {
|
|
|
|
google.protobuf.Int32Value oneof_field = 3;
|
|
|
|
int32 int32_field = 4;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
message TestInt64Value {
|
|
|
|
google.protobuf.Int64Value field = 1;
|
|
|
|
repeated google.protobuf.Int64Value repeated_field = 2;
|
|
|
|
oneof oneof_fields {
|
|
|
|
google.protobuf.Int64Value oneof_field = 3;
|
|
|
|
int32 int32_field = 4;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
message TestUInt32Value {
|
|
|
|
google.protobuf.UInt32Value field = 1;
|
|
|
|
repeated google.protobuf.UInt32Value repeated_field = 2;
|
|
|
|
oneof oneof_fields {
|
|
|
|
google.protobuf.UInt32Value oneof_field = 3;
|
|
|
|
int32 int32_field = 4;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
message TestUInt64Value {
|
|
|
|
google.protobuf.UInt64Value field = 1;
|
|
|
|
repeated google.protobuf.UInt64Value repeated_field = 2;
|
|
|
|
oneof oneof_fields {
|
|
|
|
google.protobuf.UInt64Value oneof_field = 3;
|
|
|
|
int32 int32_field = 4;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
message TestBoolValue {
|
|
|
|
google.protobuf.BoolValue field = 1;
|
|
|
|
repeated google.protobuf.BoolValue repeated_field = 2;
|
|
|
|
oneof oneof_fields {
|
|
|
|
google.protobuf.BoolValue oneof_field = 3;
|
|
|
|
int32 int32_field = 4;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
message TestStringValue {
|
|
|
|
google.protobuf.StringValue field = 1;
|
|
|
|
repeated google.protobuf.StringValue repeated_field = 2;
|
|
|
|
oneof oneof_fields {
|
|
|
|
google.protobuf.StringValue oneof_field = 3;
|
|
|
|
int32 int32_field = 4;
|
|
|
|
}
|
|
|
|
map<int32, google.protobuf.StringValue> map_field = 5;
|
|
|
|
}
|
|
|
|
|
|
|
|
message TestBytesValue {
|
|
|
|
google.protobuf.BytesValue field = 1;
|
|
|
|
repeated google.protobuf.BytesValue repeated_field = 2;
|
|
|
|
oneof oneof_fields {
|
|
|
|
google.protobuf.BytesValue oneof_field = 3;
|
|
|
|
int32 int32_field = 4;
|
|
|
|
}
|
|
|
|
}
|