从C ++头文件生成类型列表

时间:2014-12-04 23:52:28

标签: c++ reflection

我在C ++中实现了一个反射引擎,我可以构造类型并将它们添加到反射数据库中,如下所示:

TypeInfo* spark_math_Vector2_type = new TypeInfo();
spark_math_Vector2_type->setName("Vector2");
spark_math_Vector2_type->setFullName("::spark::math::Vector2");
spark_math_Vector2_type->setHash(typeid(spark::math::Vector2).hash_code());
spark_math_Vector2_type->setSize(sizeof(spark::math::Vector2));
Reflection::getInstance().registerType(spark_math_Vector2_type);

但是,我现在想要自动生成类型数据库。为此,我需要一种方法来获取在C ++头文件中创建的所有类型,以及类型的构造函数/方法/字段。

我找到gccxml,但它有各种缺点(太慢等)。是否有其他现有工具/框架可用?或者也许有更好的方法来做到这一点? (我真的不想写一个解析器......)

1 个答案:

答案 0 :(得分:0)

基本上你的选择是:

  • 爱迪生设计集团前端
  • GCC(GCCXML源于此)
  • (我们的)DMS软件再造工具包及其C ++ 14前端
EDG是商业性的,但我认为可以免费用于研究目的。 GCC希望成为一名编译器,并且会倾向于试图将其弯曲到其他目的。 Clang似乎很适合这样的任务。我们认为DMS(也是商业)是为此而设计的。