是否可以为 Protocol Buffer 中的字段定义数值范围?

Lon*_*rer 9 types ada protocol-buffers

我生活在一个非常安全/关键的 Ada-ic 环境中,并且养成了定义良好且有界的类型定义的习惯。我还遇到过很多 ASN1 使用/传播者。

我周围的一些人将 ASN1 定义为优于协议缓冲区的关键功能之一是能够定义并因此检查数据范围

所以,

  • Protocol buffers 真的没有任何范围定义系统吗?
  • 协议缓冲区之上是否有任何方法可以提供这样的功能?

常见的数字类型定义(例如 int32、int64)超出了此处的范围。


我读过谷歌概述,发现没有提及任何数据范围定义。除了有关枚举管理/表示的功能以及一些排序功能之外。

为了提供一些其他参考,我听说/阅读了下面的链接,并了解了 Ada 实施项目。

有谁知道协议缓冲区的 Ada 插件吗?

这导致

http://www.diva-portal.org/smash/get/diva2:690878/FULLTEXT02.pdf

https://github.com/persan/protobuf-ada

jpa*_*jpa 10

确实,协议缓冲区没有任何内置的数值范围机制。

然而,语法确实支持定义自定义选项:

extend google.protobuf.FieldOptions {
     optional int32 maxval = 50001;
     optional int32 minval = 50002;
}

message MyMessage {
     required int32 month = 1 [(minval) = 1, (maxval) = 12];
}
Run Code Online (Sandbox Code Playgroud)

根据所使用的库,可以使用反射在运行时访问这些库,也可以使用自定义代码生成器自动生成验证代码。