移植CPP定义为python

时间:2012-02-23 09:20:49

标签: c++ python c

我有一个程序(用C / C ++编写),它充当套接字服务器。我想在python中编写客户端。通过TCP套接字交换的数据包遵循“自制”协议(简单),使用在XXX.h文件中定义为#define ...的宏。 我想解析XXX.h文件以生成等效的XXX.py XXX.h文件仅包含CPP宏定义(和注释),例如:

//the following commands are used when talking to the server
//A tcp message is: the command(32bit word) followed by the flags (32 bits)
#define CMD_DO_SOMETHING1  1  //this does something
#define CMD_DO_SOMETHING2  2  //that does something else
 #define FLAG1   0x0001        //These flags are used as parameter in cmd2
 #define FLAG2   0x0002
 #define FLAG3   0x0004
 #define FLAG4   0x0008
 #define TEST_FLAG1(x) (x&FLAG1) //this tests for flag1

我想得到类似的内容:XXX.py:

CMD_DO_SOMETHING1=1
CMD_DO_SOMETHING2=2
 FLAG1=1
 ...
 def test_flag1(x):
    return(x&flag1)

我一直在短暂地看着swig,但不相信它确实做了我正在寻找的东西。手动解析XXX.h文件并匹配正则表达式感觉不对。在我的* .py文件上运行CPP的想法也是如此。 至少,应该转换常量定义,所以我不必重写它们两次。 有更好的想法吗?

2 个答案:

答案 0 :(得分:3)

h2py.py正是如此。它包含在工具/脚本

中的Python发行版(*)中

如果您需要转换超过#defines,请参阅问题Convert C++ Header Files To Python

编辑:(*)它至少包含在完整的源代码分发中。

答案 1 :(得分:1)

为什么不使用宏预处理器来执行此操作?这就是它们的用途。