【发布时间】:2012-02-23 09:20:49
【问题描述】:
我有一个充当套接字服务器的程序(用 C/C++ 编写)。我想用python编写客户端。通过 TCP 套接字交换的数据包遵循“自制”协议(简单),使用在 XXX.h 文件中定义为 #define... 的宏。 我想解析 XXX.h 文件以生成等效的 XXX.py XXX.h 文件仅包含 CPP 宏定义(和 cmets),例如:
//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 的想法也是如此。 至少,常量定义应该被转换,所以我不必重写它们两次。 有更好的想法吗?
【问题讨论】: