1syntax = "proto3"; 2 3import 'google/protobuf/any.proto'; 4import 'google/protobuf/wrappers.proto'; 5import 'google/protobuf/struct.proto'; 6import 'proto/test_include.proto'; 7import 'proto/test_no_namespace.proto'; 8import 'proto/test_php_namespace.proto'; 9import 'proto/test_empty_php_namespace.proto'; 10import 'proto/test_prefix.proto'; 11 12package foo; 13 14message TestMessage { 15 // Singular 16 int32 optional_int32 = 1; 17 int64 optional_int64 = 2; 18 uint32 optional_uint32 = 3; 19 uint64 optional_uint64 = 4; 20 sint32 optional_sint32 = 5; 21 sint64 optional_sint64 = 6; 22 fixed32 optional_fixed32 = 7; 23 fixed64 optional_fixed64 = 8; 24 sfixed32 optional_sfixed32 = 9; 25 sfixed64 optional_sfixed64 = 10; 26 float optional_float = 11; 27 double optional_double = 12; 28 bool optional_bool = 13; 29 string optional_string = 14; 30 bytes optional_bytes = 15; 31 32 TestEnum optional_enum = 16; 33 Sub optional_message = 17; 34 bar.TestInclude optional_included_message = 18; 35 TestMessage recursive = 19; 36 37 // True optional 38 optional int32 true_optional_int32 = 201; 39 optional int64 true_optional_int64 = 202; 40 optional uint32 true_optional_uint32 = 203; 41 optional uint64 true_optional_uint64 = 204; 42 optional sint32 true_optional_sint32 = 205; 43 optional sint64 true_optional_sint64 = 206; 44 optional fixed32 true_optional_fixed32 = 207; 45 optional fixed64 true_optional_fixed64 = 208; 46 optional sfixed32 true_optional_sfixed32 = 209; 47 optional sfixed64 true_optional_sfixed64 = 210; 48 optional float true_optional_float = 211; 49 optional double true_optional_double = 212; 50 optional bool true_optional_bool = 213; 51 optional string true_optional_string = 214; 52 optional bytes true_optional_bytes = 215; 53 54 optional TestEnum true_optional_enum = 216; 55 optional Sub true_optional_message = 217; 56 optional bar.TestInclude true_optional_included_message = 218; 57 58 // Repeated 59 repeated int32 repeated_int32 = 31; 60 repeated int64 repeated_int64 = 32; 61 repeated uint32 repeated_uint32 = 33; 62 repeated uint64 repeated_uint64 = 34; 63 repeated sint32 repeated_sint32 = 35; 64 repeated sint64 repeated_sint64 = 36; 65 repeated fixed32 repeated_fixed32 = 37; 66 repeated fixed64 repeated_fixed64 = 38; 67 repeated sfixed32 repeated_sfixed32 = 39; 68 repeated sfixed64 repeated_sfixed64 = 40; 69 repeated float repeated_float = 41; 70 repeated double repeated_double = 42; 71 repeated bool repeated_bool = 43; 72 repeated string repeated_string = 44; 73 repeated bytes repeated_bytes = 45; 74 75 repeated TestEnum repeated_enum = 46; 76 repeated Sub repeated_message = 47; 77 repeated TestMessage repeated_recursive = 48; 78 79 oneof my_oneof { 80 int32 oneof_int32 = 51; 81 int64 oneof_int64 = 52; 82 uint32 oneof_uint32 = 53; 83 uint64 oneof_uint64 = 54; 84 uint32 oneof_sint32 = 55; 85 uint64 oneof_sint64 = 56; 86 uint32 oneof_fixed32 = 57; 87 uint64 oneof_fixed64 = 58; 88 uint32 oneof_sfixed32 = 59; 89 uint64 oneof_sfixed64 = 60; 90 double oneof_double = 61; 91 float oneof_float = 62; 92 bool oneof_bool = 63; 93 string oneof_string = 64; 94 bytes oneof_bytes = 65; 95 TestEnum oneof_enum = 66; 96 Sub oneof_message = 67; 97 } 98 99 map<int32, int32> map_int32_int32 = 71; 100 map<int64, int64> map_int64_int64 = 72; 101 map<uint32, uint32> map_uint32_uint32 = 73; 102 map<uint64, uint64> map_uint64_uint64 = 74; 103 map<sint32, sint32> map_sint32_sint32 = 75; 104 map<sint64, sint64> map_sint64_sint64 = 76; 105 map<fixed32, fixed32> map_fixed32_fixed32 = 77; 106 map<fixed64, fixed64> map_fixed64_fixed64 = 78; 107 map<sfixed32, sfixed32> map_sfixed32_sfixed32 = 79; 108 map<sfixed64, sfixed64> map_sfixed64_sfixed64 = 80; 109 map<int32, float> map_int32_float = 81; 110 map<int32, double> map_int32_double = 82; 111 map<bool, bool> map_bool_bool = 83; 112 map<string, string> map_string_string = 84; 113 map<int32, bytes> map_int32_bytes = 85; 114 map<int32, TestEnum> map_int32_enum = 86; 115 map<int32, Sub> map_int32_message = 87; 116 117 map<int32, TestMessage> map_recursive = 88; 118 119 message Sub { 120 int32 a = 1; 121 repeated int32 b = 2; 122 } 123 124 // Reserved for non-existing field test. 125 // int32 non_exist = 89; 126 127 NoNamespaceMessage optional_no_namespace_message = 91; 128 NoNamespaceEnum optional_no_namespace_enum = 92; 129 repeated NoNamespaceMessage repeated_no_namespace_message = 93; 130 repeated NoNamespaceEnum repeated_no_namespace_enum = 94; 131 132 enum NestedEnum { 133 ZERO = 0; 134 } 135 136 NestedEnum optional_nested_enum = 101; 137 138 // Test prefix for reserved words. 139 message Empty { 140 int32 a = 1; 141 } 142 143 reserved 111; 144 145 // Test map with missing message value 146 map<string, TestMessage> map_string_message = 121; 147 map<string, google.protobuf.Any> map_string_any = 122; 148 map<string, google.protobuf.ListValue> map_string_list = 123; 149 map<string, google.protobuf.Struct> map_string_struct = 124; 150 151 // deprecated field 152 int32 deprecated_optional_int32 = 125 [deprecated=true]; 153} 154 155enum TestEnum { 156 ZERO = 0; 157 ONE = 1; 158 TWO = 2; 159 ECHO = 3; // Test reserved name. 160} 161 162// Test prefix for reserved words. 163message Empty { 164 int32 a = 1; 165} 166 167message ARRAY { 168 int32 a = 1; 169} 170 171message TestPackedMessage { 172 repeated int32 repeated_int32 = 90 [packed = true]; 173 repeated int64 repeated_int64 = 91 [packed = true]; 174 repeated uint32 repeated_uint32 = 92 [packed = true]; 175 repeated uint64 repeated_uint64 = 93 [packed = true]; 176 repeated sint32 repeated_sint32 = 94 [packed = true]; 177 repeated sint64 repeated_sint64 = 95 [packed = true]; 178 repeated fixed32 repeated_fixed32 = 96 [packed = true]; 179 repeated fixed64 repeated_fixed64 = 97 [packed = true]; 180 repeated sfixed32 repeated_sfixed32 = 98 [packed = true]; 181 repeated sfixed64 repeated_sfixed64 = 99 [packed = true]; 182 repeated float repeated_float = 100 [packed = true]; 183 repeated double repeated_double = 101 [packed = true]; 184 repeated bool repeated_bool = 102 [packed = true]; 185 repeated TestEnum repeated_enum = 103 [packed = true]; 186} 187 188// Need to be in sync with TestPackedMessage. 189message TestUnpackedMessage { 190 repeated int32 repeated_int32 = 90 [packed = false]; 191 repeated int64 repeated_int64 = 91 [packed = false]; 192 repeated uint32 repeated_uint32 = 92 [packed = false]; 193 repeated uint64 repeated_uint64 = 93 [packed = false]; 194 repeated sint32 repeated_sint32 = 94 [packed = false]; 195 repeated sint64 repeated_sint64 = 95 [packed = false]; 196 repeated fixed32 repeated_fixed32 = 96 [packed = false]; 197 repeated fixed64 repeated_fixed64 = 97 [packed = false]; 198 repeated sfixed32 repeated_sfixed32 = 98 [packed = false]; 199 repeated sfixed64 repeated_sfixed64 = 99 [packed = false]; 200 repeated float repeated_float = 100 [packed = false]; 201 repeated double repeated_double = 101 [packed = false]; 202 repeated bool repeated_bool = 102 [packed = false]; 203 repeated TestEnum repeated_enum = 103 [packed = false]; 204} 205 206// /**/@<>&\{ 207message TestPhpDoc { 208 int32 a = 1; 209} 210 211message TestIncludePrefixMessage { 212 TestPrefix prefix_message = 1; 213} 214 215message TestIncludeNamespaceMessage { 216 TestNamespace namespace_message = 1; 217 TestEmptyNamespace empty_namespace_message = 2; 218} 219 220// This will cause upb fields not ordered by the order in the generated code. 221message TestRandomFieldOrder { 222 int64 tag13 = 150; 223 string tag14 = 160; 224} 225 226message TestLargeFieldNumber { 227 int32 large_field_number = 536870911; 228} 229 230message TestReverseFieldOrder { 231 repeated int32 a = 2; 232 string b = 1; 233} 234 235message testLowerCaseMessage { 236} 237 238enum testLowerCaseEnum { 239 VALUE = 0; 240} 241 242message TestAny { 243 google.protobuf.Any any = 1; 244} 245 246message TestInt32Value { 247 google.protobuf.Int32Value field = 1; 248 repeated google.protobuf.Int32Value repeated_field = 2; 249 oneof oneof_fields { 250 google.protobuf.Int32Value oneof_field = 3; 251 int32 int32_field = 4; 252 } 253} 254 255message TestInt64Value { 256 google.protobuf.Int64Value field = 1; 257 repeated google.protobuf.Int64Value repeated_field = 2; 258 oneof oneof_fields { 259 google.protobuf.Int64Value oneof_field = 3; 260 int32 int32_field = 4; 261 } 262} 263 264message TestUInt32Value { 265 google.protobuf.UInt32Value field = 1; 266 repeated google.protobuf.UInt32Value repeated_field = 2; 267 oneof oneof_fields { 268 google.protobuf.UInt32Value oneof_field = 3; 269 int32 int32_field = 4; 270 } 271} 272 273message TestUInt64Value { 274 google.protobuf.UInt64Value field = 1; 275 repeated google.protobuf.UInt64Value repeated_field = 2; 276 oneof oneof_fields { 277 google.protobuf.UInt64Value oneof_field = 3; 278 int32 int32_field = 4; 279 } 280} 281 282message TestBoolValue { 283 google.protobuf.BoolValue field = 1; 284 repeated google.protobuf.BoolValue repeated_field = 2; 285 oneof oneof_fields { 286 google.protobuf.BoolValue oneof_field = 3; 287 int32 int32_field = 4; 288 } 289} 290 291message TestStringValue { 292 google.protobuf.StringValue field = 1; 293 repeated google.protobuf.StringValue repeated_field = 2; 294 oneof oneof_fields { 295 google.protobuf.StringValue oneof_field = 3; 296 int32 int32_field = 4; 297 } 298 map<int32, google.protobuf.StringValue> map_field = 5; 299} 300 301message TestBytesValue { 302 google.protobuf.BytesValue field = 1; 303 repeated google.protobuf.BytesValue repeated_field = 2; 304 oneof oneof_fields { 305 google.protobuf.BytesValue oneof_field = 3; 306 int32 int32_field = 4; 307 } 308} 309 310message Test32Fields { 311 optional uint32 id = 1; 312 optional uint32 random_name_a0 = 2; 313 optional uint32 random_name_a1 = 3; 314 optional uint32 random_name_a2 = 4; 315 optional uint32 random_name_a3 = 5; 316 optional uint32 random_name_a4 = 6; 317 optional uint32 random_name_a5 = 7; 318 optional uint32 random_name_a6 = 8; 319 optional uint32 random_name_a7 = 9; 320 optional uint32 random_name_a8 = 10; 321 optional uint32 random_name_a9 = 11; 322 optional uint32 random_name_b0 = 12; 323 optional uint32 random_name_b1 = 13; 324 optional uint32 random_name_b2 = 14; 325 optional uint32 random_name_b3 = 15; 326 optional uint32 random_name_b4 = 16; 327 optional uint32 random_name_b5 = 17; 328 optional uint32 random_name_b6 = 18; 329 optional uint32 random_name_b7 = 19; 330 optional uint32 random_name_b8 = 20; 331 optional uint32 random_name_b9 = 21; 332 optional uint32 random_name_c0 = 22; 333 optional uint32 random_name_c1 = 23; 334 optional uint32 random_name_c2 = 24; 335 optional uint32 random_name_c3 = 25; 336 optional uint32 random_name_c4 = 26; 337 optional uint32 random_name_c5 = 27; 338 optional uint32 random_name_c6 = 28; 339 optional uint32 random_name_c7 = 29; 340 optional uint32 random_name_c8 = 30; 341 optional uint32 random_name_c9 = 31; 342 optional string version = 32; 343} 344