syntax = "proto3"; package foo; import 'google/protobuf/any.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 map_int32_int32 = 71; map map_int64_int64 = 72; map map_uint32_uint32 = 73; map map_uint64_uint64 = 74; map map_sint32_sint32 = 75; map map_sint64_sint64 = 76; map map_fixed32_fixed32 = 77; map map_fixed64_fixed64 = 78; map map_sfixed32_sfixed32 = 79; map map_sfixed64_sfixed64 = 80; map map_int32_float = 81; map map_int32_double = 82; map map_bool_bool = 83; map map_string_string = 84; map map_int32_bytes = 85; map map_int32_enum = 86; map map_int32_message = 87; map 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 map_string_message = 121; map map_string_any = 122; map map_string_list = 123; map 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 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 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; }