| syntax = "proto3"; | |
| package foo; | |
| import 'google/protobuf/any.proto'; | |
| import 'google/protobuf/field_mask.proto'; | |
| import 'google/protobuf/struct.proto'; | |
| import 'google/protobuf/wrappers.proto'; | |
| import 'proto/test_empty_php_namespace.proto'; | |
| import 'proto/test_include.proto'; | |
| import 'proto/test_no_namespace.proto'; | |
| import 'proto/test_php_namespace.proto'; | |
| import 'proto/test_prefix.proto'; | |
| 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_int32 = 125 [deprecated = true]; | |
| // deprecated optional field | |
| optional int32 deprecated_optional_int32 = 126 [deprecated = true]; | |
| // deprecated wrapped field | |
| google.protobuf.Int32Value deprecated_int32_value = 127 [deprecated = true]; | |
| // deprecated oneof | |
| oneof deprecated_oneof { | |
| int32 deprecated_oneof_int32 = 128 [deprecated = true]; | |
| } | |
| // deprecated repeated field | |
| repeated int32 deprecated_repeated_int32 = 129 [deprecated = true]; | |
| // deprecated map | |
| map<int32, int32> deprecated_map_int32_int32 = 130 [deprecated = true]; | |
| // deprecated any | |
| google.protobuf.Any deprecated_any = 131 [deprecated = true]; | |
| // deprecated message | |
| TestMessage deprecated_message = 132 [deprecated = true]; | |
| // deprecated enum | |
| NestedEnum deprecated_enum = 133 [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 EmptyAnySerialization { | |
| string 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; | |
| } | |
| } | |
| message Test32Fields { | |
| optional uint32 id = 1; | |
| optional uint32 random_name_a0 = 2; | |
| optional uint32 random_name_a1 = 3; | |
| optional uint32 random_name_a2 = 4; | |
| optional uint32 random_name_a3 = 5; | |
| optional uint32 random_name_a4 = 6; | |
| optional uint32 random_name_a5 = 7; | |
| optional uint32 random_name_a6 = 8; | |
| optional uint32 random_name_a7 = 9; | |
| optional uint32 random_name_a8 = 10; | |
| optional uint32 random_name_a9 = 11; | |
| optional uint32 random_name_b0 = 12; | |
| optional uint32 random_name_b1 = 13; | |
| optional uint32 random_name_b2 = 14; | |
| optional uint32 random_name_b3 = 15; | |
| optional uint32 random_name_b4 = 16; | |
| optional uint32 random_name_b5 = 17; | |
| optional uint32 random_name_b6 = 18; | |
| optional uint32 random_name_b7 = 19; | |
| optional uint32 random_name_b8 = 20; | |
| optional uint32 random_name_b9 = 21; | |
| optional uint32 random_name_c0 = 22; | |
| optional uint32 random_name_c1 = 23; | |
| optional uint32 random_name_c2 = 24; | |
| optional uint32 random_name_c3 = 25; | |
| optional uint32 random_name_c4 = 26; | |
| optional uint32 random_name_c5 = 27; | |
| optional uint32 random_name_c6 = 28; | |
| optional uint32 random_name_c7 = 29; | |
| optional uint32 random_name_c8 = 30; | |
| optional uint32 random_name_c9 = 31; | |
| optional string version = 32; | |
| } | |
| message TestFieldMask { | |
| google.protobuf.FieldMask mask = 1; | |
| bool a = 2; | |
| string z = 3; | |
| } |