如何使用 clang 工具的 python 绑定来判断 class/struct 是可复制的
How to tell that class/struct is copyable using python bindings for clang tooling
我们的项目正在使用 clang python api 为 C++ 类 生成 python 绑定。
现在我们有一个限制,即只有在类型具有明确定义的复制构造函数时才会公开副本。
我想将其更改为还为生成的复制构造函数声明一个副本 - 所以我需要以某种方式检测它。
我关心的所有结构都是平凡可复制的,所以如果我只能检测平凡可复制的结构也很好。
我怎么知道我所在的结构是可复制的还是可简单复制的?
我以 CursorKind.STRUCT_DECL
作为起点。
这就是我们最终的结果。
a) 好像直接从 clang ast 你只能问是否 'is_pod'
cindex.py
不完全是我需要的,因为 pod
也暗示没有默认构造函数符合此 std::is_pod std::is_trivial。
b) 我们所做的是:
- 将原始文件包含在我们生成的不同 tmp 文件中,并
解析那个。
- 在该文件中生成一个特别命名的
enum <ClassName>_Traits
和 std::is_copy_constructible
用于 class 感兴趣。
我们的项目正在使用 clang python api 为 C++ 类 生成 python 绑定。 现在我们有一个限制,即只有在类型具有明确定义的复制构造函数时才会公开副本。
我想将其更改为还为生成的复制构造函数声明一个副本 - 所以我需要以某种方式检测它。
我关心的所有结构都是平凡可复制的,所以如果我只能检测平凡可复制的结构也很好。
我怎么知道我所在的结构是可复制的还是可简单复制的?
我以 CursorKind.STRUCT_DECL
作为起点。
这就是我们最终的结果。
a) 好像直接从 clang ast 你只能问是否 'is_pod' cindex.py
不完全是我需要的,因为 pod
也暗示没有默认构造函数符合此 std::is_pod std::is_trivial。
b) 我们所做的是:
- 将原始文件包含在我们生成的不同 tmp 文件中,并 解析那个。
- 在该文件中生成一个特别命名的
enum <ClassName>_Traits
和std::is_copy_constructible
用于 class 感兴趣。