我正在尝试找到一种“元语言”,可用于为成员定义结构和获取/设置代码。问题是该结构已经存在于代码中,并且这种“元语言”将作为原始手动编码结构的逐位替换,以允许生成描述结构的标头。关键是这些结构被用作 C# 应用程序和嵌入式设备之间协议的一部分(不是基于 linux 的,认为像 PIC 或 CM0 一样更小,更受限制。)元语言将充当
- 结构成员的文档
- 为 get/set 操作生成 C# 结构和实现
- 生成打包的 ANSI-C 结构和获取/设置函数
元语言需要支持
- 枚举定义(具有指定的大小 - 即 uint16_t、uint8_t 或更小的多位枚举)
- 位数组(指定大小 - 即 48 位数组被打包成 6 个字节,)
- 位结构/枚举数组(指定大小 - 即 48 个索引的 2 位结构为 12 个字节,)
- 字节序和位序规范,
- 生成可以通过生成的 ANSI-C 代码或 C-sharp 代码直接读取的二进制结构,以便通过网络发送。
在收到数据时对数据进行一些有限的验证也会很好。
到目前为止,我已经看过
- BSON
- 蚀刻
- Hessian Avro
- 冰
- 消息包
- 协议缓冲区
- 节约
所有这些对于文档和构建新协议时都非常有用,但在尝试保持与现有协议的兼容性时,由于数据编组中固有的类型编码,这些都不足。
我还查看了 ASN.1 的 ECN 编码,但这似乎太难以理解,导致文档出现问题。
我已经查看了从 C 结构生成 C# 结构,但那里没有一个好的选择。
有什么建议吗?