使用JICAN2模板从C/C++头文件生成文件

header2whatever的Python项目详细描述


header2whatever(h2w)

使用CPFEADADPARSER读取C/C++头文件中的任意文件 生成输出的输入文件和jinja2模板。

这是出于从C++头生成PybDn11缠绕代码的愿望而产生的。 文件夹。pybind11gen已经创建,但是我想生成更多的东西…

<> P>仍然有粗糙的边缘,文档大部分是不存在的,但是 非常欢迎使用修复/改进的拉取请求!

安装

pip install header2whatever

用法

首先,您需要创建一个jinja2模板来表示您想要的任何内容 从头文件生成。例如,也许你想描述一下 yaml中的函数:

---
{% for header in headers %}
{% for fn in header.functions %}
{{ fn.name }}:
  returns: {{ fn.returns }}
  params:
  {% for param in fn.parameters %}
  - { name: {{ param.name }}, type: "{{ param.type }}" }
  {% endfor %}

{% endfor %}
{% endfor %}

假设您有以下头文件foo.h

void some_fn(int i);
int returns_int(int p1, char* p2);

您可以执行以下操作:

h2w foo.h -o foo.yml

您将得到以下输出:

---
returns_int:
  returns: int
  params:
  - { name: p1, type: "int" }
  - { name: p2, type: "char *" }

some_fn:
  returns: void
  params:
  - { name: i, type: "int" }

正如你所看到的,虽然这是一个愚蠢的例子,但是这种方法非常灵活。 而且相当强大。

目前,传递给模板的数据结构没有文档化,但是 它是cppHeaderParser解析 头球。

有关更多示例,请参见“示例”文件夹。

批处理模式

如果需要处理多个文件,或者只想记录 在不编写shell脚本的情况下自动生成文件,批处理模式非常有用。你 传递两个参数:带有配置的yaml文件和输出目录 将文件写入。

使用外部来源的数据

有时候你想混入CPPHeaderParser不能给你的数据。如果你 传递--yaml选项,它将把yaml加载到字典中并使其成为 模板可用作“data”变量。

还可以通过--param选项传递key=value参数,以及 指定的密钥将可用于模板。

自定义处理

当你需要做更复杂的逻辑而Jinja2模板不是 适合于,可以指定从中加载自定义挂钩的python文件。

有关文档,请参见[默认挂钩](header2whatever/default_hooks.py)。

许可证

阿帕奇2

作者

达斯汀spicuzza(dustin@virtualroadside.com

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java使用DAO,DTO模式作为MVC   java获取用于Android开发的图像   java Android Studio txt文件中的文件计数   任何类型泛型构造的枚举的java类   java为我的应用程序上的每个用户创建一个图表   算法如何在java中进行递归搜索?   java如何从MongoRepository/QueryDSL中获取不同的字段?   java如何获取JCheckbox的选定索引?   java嵌套。属性文件   Java如何发现两个数组是否彼此重复?   java Spring启动应用程序,带有raspberry pi上的Jython   RMI需要java。rmi。服务器NAT的主机名,那么像CORBA这样的其他技术如何解决NAT问题呢?   java If语句总是给出相同的答案   x到y的幂的java递归方法   使用ApacheCamel对USPSAPI进行地址验证的java HTTP查询   java很难定义与ArrayList交互的方法   java如何将HttpServletRequest转换为原始请求字符串?