2
0

enumsizes.proto 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  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. syntax = "proto2";
  7. import 'nanopb.proto';
  8. option (nanopb_fileopt).long_names = false;
  9. enum UnpackedUint8 {
  10. option (nanopb_enumopt).packed_enum = false;
  11. UU8_MIN = 0;
  12. UU8_MAX = 255;
  13. }
  14. enum PackedUint8 {
  15. option (nanopb_enumopt).packed_enum = true;
  16. PU8_MIN = 0;
  17. PU8_MAX = 255;
  18. }
  19. enum UnpackedInt8 {
  20. option (nanopb_enumopt).packed_enum = false;
  21. UI8_MIN = -128;
  22. UI8_MAX = 127;
  23. }
  24. enum PackedInt8 {
  25. option (nanopb_enumopt).packed_enum = true;
  26. PI8_MIN = -128;
  27. PI8_MAX = 127;
  28. }
  29. enum UnpackedUint16 {
  30. option (nanopb_enumopt).packed_enum = false;
  31. UU16_MIN = 0;
  32. UU16_MAX = 65535;
  33. }
  34. enum PackedUint16 {
  35. option (nanopb_enumopt).packed_enum = true;
  36. PU16_MIN = 0;
  37. PU16_MAX = 65535;
  38. }
  39. enum UnpackedInt16 {
  40. option (nanopb_enumopt).packed_enum = false;
  41. UI16_MIN = -32768;
  42. UI16_MAX = 32767;
  43. }
  44. enum PackedInt16 {
  45. option (nanopb_enumopt).packed_enum = true;
  46. PI16_MIN = -32768;
  47. PI16_MAX = 32767;
  48. }
  49. /* Protobuf supports enums up to 32 bits.
  50. * The 32 bit case is covered by HugeEnum in the alltypes test.
  51. */
  52. message PackedEnums {
  53. required PackedUint8 u8_min = 1;
  54. required PackedUint8 u8_max = 2;
  55. required PackedInt8 i8_min = 3;
  56. required PackedInt8 i8_max = 4;
  57. required PackedUint16 u16_min = 5;
  58. required PackedUint16 u16_max = 6;
  59. required PackedInt16 i16_min = 7;
  60. required PackedInt16 i16_max = 8;
  61. }
  62. message UnpackedEnums {
  63. required UnpackedUint8 u8_min = 1;
  64. required UnpackedUint8 u8_max = 2;
  65. required UnpackedInt8 i8_min = 3;
  66. required UnpackedInt8 i8_max = 4;
  67. required UnpackedUint16 u16_min = 5;
  68. required UnpackedUint16 u16_max = 6;
  69. required UnpackedInt16 i16_min = 7;
  70. required UnpackedInt16 i16_max = 8;
  71. }