xref: /aosp_15_r20/external/nanopb-c/tests/options/options.proto (revision c8d645cafcee3f91213d30caa0fe303887010b9b)
1*c8d645caSAndroid Build Coastguard Worker/* Test nanopb option parsing.
2*c8d645caSAndroid Build Coastguard Worker * options.expected lists the patterns that are searched for in the output.
3*c8d645caSAndroid Build Coastguard Worker */
4*c8d645caSAndroid Build Coastguard Worker
5*c8d645caSAndroid Build Coastguard Workersyntax = "proto2";
6*c8d645caSAndroid Build Coastguard Worker
7*c8d645caSAndroid Build Coastguard Workerimport "nanopb.proto";
8*c8d645caSAndroid Build Coastguard Worker
9*c8d645caSAndroid Build Coastguard Worker// File level options
10*c8d645caSAndroid Build Coastguard Workeroption (nanopb_fileopt).max_size = 20;
11*c8d645caSAndroid Build Coastguard Worker
12*c8d645caSAndroid Build Coastguard Workermessage Message1
13*c8d645caSAndroid Build Coastguard Worker{
14*c8d645caSAndroid Build Coastguard Worker    required string filesize = 1;
15*c8d645caSAndroid Build Coastguard Worker}
16*c8d645caSAndroid Build Coastguard Worker
17*c8d645caSAndroid Build Coastguard Worker// Message level options
18*c8d645caSAndroid Build Coastguard Workermessage Message2
19*c8d645caSAndroid Build Coastguard Worker{
20*c8d645caSAndroid Build Coastguard Worker    option (nanopb_msgopt).max_size = 30;
21*c8d645caSAndroid Build Coastguard Worker    required string msgsize = 1;
22*c8d645caSAndroid Build Coastguard Worker}
23*c8d645caSAndroid Build Coastguard Worker
24*c8d645caSAndroid Build Coastguard Worker// Field level options
25*c8d645caSAndroid Build Coastguard Workermessage Message3
26*c8d645caSAndroid Build Coastguard Worker{
27*c8d645caSAndroid Build Coastguard Worker    option (nanopb_msgopt).msgid = 103;
28*c8d645caSAndroid Build Coastguard Worker    required string fieldsize = 1 [(nanopb).max_size = 40];
29*c8d645caSAndroid Build Coastguard Worker    required string fieldlen = 2 [(nanopb).max_length = 40];
30*c8d645caSAndroid Build Coastguard Worker}
31*c8d645caSAndroid Build Coastguard Worker
32*c8d645caSAndroid Build Coastguard Worker// Forced callback field
33*c8d645caSAndroid Build Coastguard Workermessage Message4
34*c8d645caSAndroid Build Coastguard Worker{
35*c8d645caSAndroid Build Coastguard Worker    option (nanopb_msgopt).msgid = 104;
36*c8d645caSAndroid Build Coastguard Worker    required int32 int32_callback = 1 [(nanopb).type = FT_CALLBACK];
37*c8d645caSAndroid Build Coastguard Worker}
38*c8d645caSAndroid Build Coastguard Worker
39*c8d645caSAndroid Build Coastguard Worker// Short enum names
40*c8d645caSAndroid Build Coastguard Workerenum Enum1
41*c8d645caSAndroid Build Coastguard Worker{
42*c8d645caSAndroid Build Coastguard Worker    option (nanopb_enumopt).long_names = false;
43*c8d645caSAndroid Build Coastguard Worker    EnumValue1 = 1;
44*c8d645caSAndroid Build Coastguard Worker    EnumValue2 = 2;
45*c8d645caSAndroid Build Coastguard Worker}
46*c8d645caSAndroid Build Coastguard Worker
47*c8d645caSAndroid Build Coastguard Workermessage EnumTest
48*c8d645caSAndroid Build Coastguard Worker{
49*c8d645caSAndroid Build Coastguard Worker    required Enum1 field = 1 [default = EnumValue2];
50*c8d645caSAndroid Build Coastguard Worker}
51*c8d645caSAndroid Build Coastguard Worker
52*c8d645caSAndroid Build Coastguard Worker// Short enum names inside message
53*c8d645caSAndroid Build Coastguard Workermessage Message5
54*c8d645caSAndroid Build Coastguard Worker{
55*c8d645caSAndroid Build Coastguard Worker    option (nanopb_msgopt).msgid = 105;
56*c8d645caSAndroid Build Coastguard Worker    enum Enum2
57*c8d645caSAndroid Build Coastguard Worker    {
58*c8d645caSAndroid Build Coastguard Worker       option (nanopb_enumopt).long_names = false;
59*c8d645caSAndroid Build Coastguard Worker       EnumValue1 = 1;
60*c8d645caSAndroid Build Coastguard Worker    }
61*c8d645caSAndroid Build Coastguard Worker    required Enum2 field = 1 [default = EnumValue1];
62*c8d645caSAndroid Build Coastguard Worker}
63*c8d645caSAndroid Build Coastguard Worker
64*c8d645caSAndroid Build Coastguard Worker// Packed structure
65*c8d645caSAndroid Build Coastguard Workermessage my_packed_struct
66*c8d645caSAndroid Build Coastguard Worker{
67*c8d645caSAndroid Build Coastguard Worker    option (nanopb_msgopt).packed_struct = true;
68*c8d645caSAndroid Build Coastguard Worker    optional int32 myfield = 1;
69*c8d645caSAndroid Build Coastguard Worker}
70*c8d645caSAndroid Build Coastguard Worker
71*c8d645caSAndroid Build Coastguard Worker// Message with ignored field
72*c8d645caSAndroid Build Coastguard Workermessage Message6
73*c8d645caSAndroid Build Coastguard Worker{
74*c8d645caSAndroid Build Coastguard Worker    required int32 field1 = 1;
75*c8d645caSAndroid Build Coastguard Worker    optional int32 skipped_field = 2 [(nanopb).type = FT_IGNORE];
76*c8d645caSAndroid Build Coastguard Worker}
77*c8d645caSAndroid Build Coastguard Worker
78*c8d645caSAndroid Build Coastguard Worker// Message that is skipped
79*c8d645caSAndroid Build Coastguard Workermessage SkippedMessage
80*c8d645caSAndroid Build Coastguard Worker{
81*c8d645caSAndroid Build Coastguard Worker    option (nanopb_msgopt).skip_message = true;
82*c8d645caSAndroid Build Coastguard Worker    required int32 foo = 1;
83*c8d645caSAndroid Build Coastguard Worker}
84*c8d645caSAndroid Build Coastguard Worker
85*c8d645caSAndroid Build Coastguard Worker// Message with oneof field
86*c8d645caSAndroid Build Coastguard Workermessage OneofMessage
87*c8d645caSAndroid Build Coastguard Worker{
88*c8d645caSAndroid Build Coastguard Worker    oneof foo {
89*c8d645caSAndroid Build Coastguard Worker        int32 bar = 1;
90*c8d645caSAndroid Build Coastguard Worker    }
91*c8d645caSAndroid Build Coastguard Worker}
92*c8d645caSAndroid Build Coastguard Worker
93*c8d645caSAndroid Build Coastguard Worker// Proto3-style optional field in proto2 file
94*c8d645caSAndroid Build Coastguard Workermessage Proto3Field
95*c8d645caSAndroid Build Coastguard Worker{
96*c8d645caSAndroid Build Coastguard Worker    optional int32 proto3field = 1 [(nanopb).proto3 = true];
97*c8d645caSAndroid Build Coastguard Worker}
98*c8d645caSAndroid Build Coastguard Worker
99