1syntax = "proto3";
2// package name placeholder
3
4message SubMessage {
5    string substuff1 = 1;
6    int32 substuff2 = 2;
7    fixed32 substuff3 = 3;
8}
9
10message EmptyMessage {
11
12}
13
14enum HugeEnum {
15    HE_Zero = 0;
16    Negative = -2147483647; /* protoc doesn't accept -2147483648 here */
17    Positive =  2147483647;
18}
19
20message Limits {
21    int32      int32_min  =  1;
22    int32      int32_max  =  2;
23    uint32     uint32_min =  3;
24    uint32     uint32_max =  4;
25    int64      int64_min  =  5;
26    int64      int64_max  =  6;
27    uint64     uint64_min =  7;
28    uint64     uint64_max =  8;
29    HugeEnum   enum_min   =  9;
30    HugeEnum   enum_max   = 10;
31}
32
33enum MyEnum {
34    Zero = 0;
35    First = 1;
36    Second = 2;
37    Truth = 42;
38}
39
40message AllTypes {
41    int32      sng_int32   = 1;
42    int64      sng_int64   = 2;
43    uint32     sng_uint32  = 3;
44    uint64     sng_uint64  = 4;
45    sint32     sng_sint32  = 5;
46    sint64     sng_sint64  = 6;
47    bool       sng_bool    = 7;
48    
49    fixed32    sng_fixed32 = 8;
50    sfixed32   sng_sfixed32= 9;
51    float      sng_float   = 10;
52    
53    fixed64    sng_fixed64 = 11;
54    sfixed64   sng_sfixed64= 12;
55    double     sng_double  = 13;
56    
57    string     sng_string  = 14;
58    bytes      sng_bytes   = 15;
59    SubMessage sng_submsg  = 16;
60    MyEnum     sng_enum    = 17;
61    EmptyMessage sng_emptymsg = 18;
62    bytes      sng_fbytes  = 19;
63
64    repeated int32      rep_int32   = 21 [packed = true];
65    repeated int64      rep_int64   = 22 [packed = true];
66    repeated uint32     rep_uint32  = 23 [packed = true];
67    repeated uint64     rep_uint64  = 24 [packed = true];
68    repeated sint32     rep_sint32  = 25 [packed = true];
69    repeated sint64     rep_sint64  = 26 [packed = true];
70    repeated bool       rep_bool    = 27 [packed = true];
71    
72    repeated fixed32    rep_fixed32 = 28 [packed = true];
73    repeated sfixed32   rep_sfixed32= 29 [packed = true];
74    repeated float      rep_float   = 30 [packed = true];
75    
76    repeated fixed64    rep_fixed64 = 31 [packed = true];
77    repeated sfixed64   rep_sfixed64= 32 [packed = true];
78    repeated double     rep_double  = 33 [packed = true];
79    
80    repeated string     rep_string  = 34;
81    repeated bytes      rep_bytes   = 35;
82    repeated SubMessage rep_submsg  = 36;
83    repeated MyEnum     rep_enum    = 37 [packed = true];
84    repeated EmptyMessage rep_emptymsg = 38;
85    repeated bytes      rep_fbytes  = 39;
86    
87    oneof oneof
88    {
89        SubMessage oneof_msg1 = 59;
90        EmptyMessage oneof_msg2 = 60;
91    }
92    
93    // Check that extreme integer values are handled correctly
94    Limits     req_limits = 98;
95
96    // Just to make sure that the size of the fields has been calculated
97    // properly, i.e. otherwise a bug in last field might not be detected.
98    int32      end = 99;
99}
100
101