Separation Generator to a dedicated repo
[apps/low-level-can-service.git] / libs / nanopb / tests / enum_sizes / enumsizes.proto
1 /* Test handling of enums with different value ranges.
2  * Depending on compiler and the packed_enum setting, the datatypes
3  * for enums can be either signed or unsigned. In past this has caused
4  * a bit of a problem for the encoder/decoder (issue #164).
5  */
6
7 syntax = "proto2";
8
9 import 'nanopb.proto';
10
11 option (nanopb_fileopt).long_names = false;
12
13 enum UnpackedUint8 {
14     option (nanopb_enumopt).packed_enum = false;
15     UU8_MIN = 0;
16     UU8_MAX = 255;
17 }
18
19 enum PackedUint8 {
20     option (nanopb_enumopt).packed_enum = true;
21     PU8_MIN = 0;
22     PU8_MAX = 255;
23 }
24
25 enum UnpackedInt8 {
26     option (nanopb_enumopt).packed_enum = false;
27     UI8_MIN = -128;
28     UI8_MAX = 127;
29 }
30
31 enum PackedInt8 {
32     option (nanopb_enumopt).packed_enum = true;
33     PI8_MIN = -128;
34     PI8_MAX = 127;
35 }
36
37 enum UnpackedUint16 {
38     option (nanopb_enumopt).packed_enum = false;
39     UU16_MIN = 0;
40     UU16_MAX = 65535;
41 }
42
43 enum PackedUint16 {
44     option (nanopb_enumopt).packed_enum = true;
45     PU16_MIN = 0;
46     PU16_MAX = 65535;
47 }
48
49 enum UnpackedInt16 {
50     option (nanopb_enumopt).packed_enum = false;
51     UI16_MIN = -32768;
52     UI16_MAX = 32767;
53 }
54
55 enum PackedInt16 {
56     option (nanopb_enumopt).packed_enum = true;
57     PI16_MIN = -32768;
58     PI16_MAX = 32767;
59 }
60
61 /* Protobuf supports enums up to 32 bits.
62  * The 32 bit case is covered by HugeEnum in the alltypes test.
63  */
64
65 message PackedEnums {
66     required PackedUint8  u8_min  = 1;
67     required PackedUint8  u8_max  = 2;
68     required PackedInt8   i8_min  = 3;
69     required PackedInt8   i8_max  = 4;
70     required PackedUint16 u16_min = 5;
71     required PackedUint16 u16_max = 6;
72     required PackedInt16  i16_min = 7;
73     required PackedInt16  i16_max = 8;
74 }
75
76 message UnpackedEnums {
77     required UnpackedUint8  u8_min  = 1;
78     required UnpackedUint8  u8_max  = 2;
79     required UnpackedInt8   i8_min  = 3;
80     required UnpackedInt8   i8_max  = 4;
81     required UnpackedUint16 u16_min = 5;
82     required UnpackedUint16 u16_max = 6;
83     required UnpackedInt16  i16_min = 7;
84     required UnpackedInt16  i16_max = 8;
85 }
86