b5badcfd40ea5e36fed94612e2f536d23d0dfa56
[apps/agl-service-can-low-level.git] / tests / options.proto
1 /* Test nanopb option parsing.
2  * options.expected lists the patterns that are searched for in the output.
3  */
4
5 import "nanopb.proto";
6
7 // File level options
8 option (nanopb_fileopt).max_size = 20;
9
10 message Message1
11 {
12     required string filesize = 1;
13 }
14
15 // Message level options
16 message Message2
17 {
18     option (nanopb_msgopt).max_size = 30;
19     required string msgsize = 1;
20 }
21
22 // Field level options
23 message Message3
24 {
25     required string fieldsize = 1 [(nanopb).max_size = 40];
26 }
27
28 // Forced callback field
29 message Message4
30 {
31     required int32 int32_callback = 1 [(nanopb).type = FT_CALLBACK];
32 }
33
34 // Short enum names
35 enum Enum1
36 {
37     option (nanopb_enumopt).long_names = false;
38     EnumValue1 = 1;
39     EnumValue2 = 2;
40 }
41
42 message EnumTest
43 {
44     required Enum1 field = 1 [default = EnumValue2];
45 }
46
47 // Short enum names inside message
48 message Message5
49 {
50     enum Enum2
51     {
52        option (nanopb_enumopt).long_names = false;
53        EnumValue1 = 1;
54     }
55     required Enum2 field = 1 [default = EnumValue1];
56 }
57
58 // Packed structure
59 message my_packed_struct
60 {
61     option (nanopb_msgopt).packed_struct = true;
62     optional int32 myfield = 1;
63 }
64
65 // Message with ignored field
66 // Note: doesn't really test if the field is missing in the output,
67 // but atleast tests that the output compiles.
68 message Message6
69 {
70     required int32 field1 = 1;
71     optional int32 field2 = 2 [(nanopb).type = FT_IGNORE];
72 }
73