【发布时间】:2016-04-22 04:30:32
【问题描述】:
我正在尝试寻找一种“元语言”,可用于定义结构并为成员获取/设置代码。问题是该结构已经存在于代码中,并且这种“元语言”将作为原始手动编码结构的逐位替换,以允许生成描述结构的标头。关键是这些结构被用作 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 编码,但这似乎太难以理解,导致文档出现问题。
我查看了Generating C# structure from C structure,但那里没有一个好的选择。
有什么建议吗?
【问题讨论】:
标签: c# data-structures protocols code-generation ansi-c