• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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