1syntax = "proto3"; 2 3import 'google/protobuf/any.proto'; 4import 'google/protobuf/struct.proto'; 5import 'proto/test_include.proto'; 6import 'proto/test_no_namespace.proto'; 7import 'proto/test_php_namespace.proto'; 8import 'proto/test_empty_php_namespace.proto'; 9import 'proto/test_prefix.proto'; 10 11package foo; 12 13message TestMessage { 14 // Singular 15 int32 optional_int32 = 1; 16 int64 optional_int64 = 2; 17 uint32 optional_uint32 = 3; 18 uint64 optional_uint64 = 4; 19 sint32 optional_sint32 = 5; 20 sint64 optional_sint64 = 6; 21 fixed32 optional_fixed32 = 7; 22 fixed64 optional_fixed64 = 8; 23 sfixed32 optional_sfixed32 = 9; 24 sfixed64 optional_sfixed64 = 10; 25 float optional_float = 11; 26 double optional_double = 12; 27 bool optional_bool = 13; 28 string optional_string = 14; 29 bytes optional_bytes = 15; 30 31 TestEnum optional_enum = 16; 32 Sub optional_message = 17; 33 bar.TestInclude optional_included_message = 18; 34 TestMessage recursive = 19; 35 36 // Repeated 37 repeated int32 repeated_int32 = 31; 38 repeated int64 repeated_int64 = 32; 39 repeated uint32 repeated_uint32 = 33; 40 repeated uint64 repeated_uint64 = 34; 41 repeated sint32 repeated_sint32 = 35; 42 repeated sint64 repeated_sint64 = 36; 43 repeated fixed32 repeated_fixed32 = 37; 44 repeated fixed64 repeated_fixed64 = 38; 45 repeated sfixed32 repeated_sfixed32 = 39; 46 repeated sfixed64 repeated_sfixed64 = 40; 47 repeated float repeated_float = 41; 48 repeated double repeated_double = 42; 49 repeated bool repeated_bool = 43; 50 repeated string repeated_string = 44; 51 repeated bytes repeated_bytes = 45; 52 53 repeated TestEnum repeated_enum = 46; 54 repeated Sub repeated_message = 47; 55 repeated TestMessage repeated_recursive = 48; 56 57 oneof my_oneof { 58 int32 oneof_int32 = 51; 59 int64 oneof_int64 = 52; 60 uint32 oneof_uint32 = 53; 61 uint64 oneof_uint64 = 54; 62 uint32 oneof_sint32 = 55; 63 uint64 oneof_sint64 = 56; 64 uint32 oneof_fixed32 = 57; 65 uint64 oneof_fixed64 = 58; 66 uint32 oneof_sfixed32 = 59; 67 uint64 oneof_sfixed64 = 60; 68 double oneof_double = 61; 69 float oneof_float = 62; 70 bool oneof_bool = 63; 71 string oneof_string = 64; 72 bytes oneof_bytes = 65; 73 TestEnum oneof_enum = 66; 74 Sub oneof_message = 67; 75 } 76 77 map<int32, int32> map_int32_int32 = 71; 78 map<int64, int64> map_int64_int64 = 72; 79 map<uint32, uint32> map_uint32_uint32 = 73; 80 map<uint64, uint64> map_uint64_uint64 = 74; 81 map<sint32, sint32> map_sint32_sint32 = 75; 82 map<sint64, sint64> map_sint64_sint64 = 76; 83 map<fixed32, fixed32> map_fixed32_fixed32 = 77; 84 map<fixed64, fixed64> map_fixed64_fixed64 = 78; 85 map<sfixed32, sfixed32> map_sfixed32_sfixed32 = 79; 86 map<sfixed64, sfixed64> map_sfixed64_sfixed64 = 80; 87 map<int32, float> map_int32_float = 81; 88 map<int32, double> map_int32_double = 82; 89 map<bool, bool> map_bool_bool = 83; 90 map<string, string> map_string_string = 84; 91 map<int32, bytes> map_int32_bytes = 85; 92 map<int32, TestEnum> map_int32_enum = 86; 93 map<int32, Sub> map_int32_message = 87; 94 95 map<int32, TestMessage> map_recursive = 88; 96 97 message Sub { 98 int32 a = 1; 99 repeated int32 b = 2; 100 } 101 102 // Reserved for non-existing field test. 103 // int32 non_exist = 89; 104 105 NoNamespaceMessage optional_no_namespace_message = 91; 106 NoNamespaceEnum optional_no_namespace_enum = 92; 107 repeated NoNamespaceMessage repeated_no_namespace_message = 93; 108 repeated NoNamespaceEnum repeated_no_namespace_enum = 94; 109 110 enum NestedEnum { 111 ZERO = 0; 112 } 113 114 NestedEnum optional_nested_enum = 101; 115 116 // Test prefix for reserved words. 117 message Empty { 118 int32 a = 1; 119 } 120 121 reserved 111; 122} 123 124enum TestEnum { 125 ZERO = 0; 126 ONE = 1; 127 TWO = 2; 128 ECHO = 3; // Test reserved name. 129} 130 131// Test prefix for reserved words. 132message Empty { 133 int32 a = 1; 134} 135 136message ARRAY { 137 int32 a = 1; 138} 139 140message TestPackedMessage { 141 repeated int32 repeated_int32 = 90 [packed = true]; 142 repeated int64 repeated_int64 = 91 [packed = true]; 143 repeated uint32 repeated_uint32 = 92 [packed = true]; 144 repeated uint64 repeated_uint64 = 93 [packed = true]; 145 repeated sint32 repeated_sint32 = 94 [packed = true]; 146 repeated sint64 repeated_sint64 = 95 [packed = true]; 147 repeated fixed32 repeated_fixed32 = 96 [packed = true]; 148 repeated fixed64 repeated_fixed64 = 97 [packed = true]; 149 repeated sfixed32 repeated_sfixed32 = 98 [packed = true]; 150 repeated sfixed64 repeated_sfixed64 = 99 [packed = true]; 151 repeated float repeated_float = 100 [packed = true]; 152 repeated double repeated_double = 101 [packed = true]; 153 repeated bool repeated_bool = 102 [packed = true]; 154 repeated TestEnum repeated_enum = 103 [packed = true]; 155} 156 157// Need to be in sync with TestPackedMessage. 158message TestUnpackedMessage { 159 repeated int32 repeated_int32 = 90 [packed = false]; 160 repeated int64 repeated_int64 = 91 [packed = false]; 161 repeated uint32 repeated_uint32 = 92 [packed = false]; 162 repeated uint64 repeated_uint64 = 93 [packed = false]; 163 repeated sint32 repeated_sint32 = 94 [packed = false]; 164 repeated sint64 repeated_sint64 = 95 [packed = false]; 165 repeated fixed32 repeated_fixed32 = 96 [packed = false]; 166 repeated fixed64 repeated_fixed64 = 97 [packed = false]; 167 repeated sfixed32 repeated_sfixed32 = 98 [packed = false]; 168 repeated sfixed64 repeated_sfixed64 = 99 [packed = false]; 169 repeated float repeated_float = 100 [packed = false]; 170 repeated double repeated_double = 101 [packed = false]; 171 repeated bool repeated_bool = 102 [packed = false]; 172 repeated TestEnum repeated_enum = 103 [packed = false]; 173} 174 175// /**/@<>&\{ 176message TestPhpDoc { 177 int32 a = 1; 178} 179 180message TestIncludePrefixMessage { 181 TestPrefix prefix_message = 1; 182} 183 184message TestIncludeNamespaceMessage { 185 TestNamespace namespace_message = 1; 186 TestEmptyNamespace empty_namespace_message = 2; 187} 188 189// This will cause upb fields not ordered by the order in the generated code. 190message TestRandomFieldOrder { 191 int64 tag13 = 150; 192 string tag14 = 160; 193} 194 195message TestReverseFieldOrder { 196 repeated int32 a = 2; 197 string b = 1; 198} 199 200message testLowerCaseMessage { 201} 202 203enum testLowerCaseEnum { 204 VALUE = 0; 205} 206 207message TestAny { 208 google.protobuf.Any any = 1; 209} 210