Слияние кода завершено, страница обновится автоматически
使用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,来做编解码,相对于业务对象和消息对象之间的桥梁吧,减少耦合。
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )