代码拉取完成,页面将自动刷新
同步操作将从 newzai/BNFParser 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
使用Scala BNF解析模块,解析C++简单头文件。
主要实现以下功能:
1. 提取enum定义及其值
2. 提取Class的定义(只关注普通数据成员),不包含static数据成员和mutable数据成员。
注意:
不要在头文件中有任何实现的方法,请转移到cpp文件。C++语言的语法太复杂,特别是加入了C++11以后更加复杂,本人比较愚钝
要实现函数的定义,估计写个几年都写不完。。因此只关注声明性质的C++语句。。
支持一下数据类型:
1. 基础数据类型,bool\char\short\int\long 包含无符号。
2. 支持enum、class作为数据成员
3. 支持vector\set\list\map作为数据成员,STL容器包含的数据类型可以为 (1)(2)支持的数据类型.
4. 支持shared_ptr\weak_ptr作为数据成员,并且可以作为容器的数据成员.
5. 不支持原始的指针成员,完全可以使用shared_ptr\weak_ptr替代。
cn.newzai.parser.cplusplus 包,未解析C++类头文件的相关类,
cn.newzai.parser.cplusplus.result 包,包含解析后的结果,类和枚举
cn.newzai.parser.cplusplus.result.generate 包,包含自动代码生成的内容
一:类方法的自动生成,包含自动生成默认构造函数、拷贝构造函数、复制函数、Get和Set方法
二:自动生成proto(protobuf 消息定义文件),并且生成了C++类和protobuf message类之间的转换接口,
特化 toMessage,fromMessage 2个方法。
C++对象与Protobuf message的映射规则: http://blog.csdn.net/love_newzai/article/details/9013183
三:生成C#类,及其与protobuf消息之间的转换方法
四: 生成Scala类,及其与protobuf消息之间的转换方法
五:所有的generate都是trait,可以定制自己要生成的目标语言,进行扩展。。
本工程的目的,是自动化开发,开发网络通信的时候,减少客户端和服务器之间的编码。。。让我们用更多的时间关注与与业务。
为何选择protobuf作为消息格式: 因为效率高,使用起来方便,不需要自己编解码。。
为何还要转换呢,为何不在业务中直接使用protobuf生成的对象呢:不太适合,这样耦合太多。。因此使用toMessage、fromMessage,来做编解码,相对于业务对象和消息对象之间的桥梁吧,减少耦合。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。