78 lines
1.9 KiB
Python
78 lines
1.9 KiB
Python
# encoding: UTF-8
|
|
|
|
__author__ = 'CHENXY'
|
|
|
|
from sgit_data_type import *
|
|
import re
|
|
|
|
def main():
|
|
"""主函数"""
|
|
fcpp = open('SgitFtdcUserApiStruct.h', 'r')
|
|
fpy = open('sgit_struct.py', 'w')
|
|
|
|
fpy.write('# encoding: UTF-8\n')
|
|
fpy.write('\n')
|
|
fpy.write('structDict = {}\n')
|
|
fpy.write('\n')
|
|
|
|
for no, line in enumerate(fcpp):
|
|
# 结构体申明注释
|
|
if '///' in line and '\t' not in line:
|
|
py_line = '#' + line[3:]
|
|
|
|
# 结构体变量注释
|
|
elif '\t///' in line:
|
|
py_line = '#' + line[4:]
|
|
|
|
# 结构体申明
|
|
elif 'struct' in line:
|
|
content = line.split(' ')
|
|
name = content[-1].replace('\n','')
|
|
py_line = '%s = {}\n' % name
|
|
|
|
# 结构体变量
|
|
elif ' ' in line and '///' not in line and '{' not in line:
|
|
#content = line.split('\t')
|
|
|
|
if ' ;' in line:
|
|
line = line.replace(' ;', ';')
|
|
|
|
if ' ' in line:
|
|
line = re.sub(' +', '\t', line)
|
|
|
|
if '\t\t' in line:
|
|
line = re.sub('\t+', '\t', line)
|
|
|
|
if '//' in line:
|
|
n = line.index('//')
|
|
line = line[:n]
|
|
|
|
print no, ':', line
|
|
|
|
content = line.split('\t')
|
|
print content
|
|
|
|
typedef = content[1]
|
|
type_ = typedefDict[typedef]
|
|
variable = content[2].replace(';\n', "")
|
|
if ';' in variable:
|
|
variable = variable.replace(';', '')
|
|
py_line = '%s["%s"] = "%s"\n' % (name, variable, type_)
|
|
|
|
# 结构体结束
|
|
elif '}' in line:
|
|
py_line = "structDict['%s'] = %s\n\n" % (name, name)
|
|
|
|
# 结构体开始
|
|
elif '{' in line:
|
|
py_line = ''
|
|
|
|
# 其他
|
|
else:
|
|
py_line = '\n'
|
|
|
|
fpy.write(py_line.decode('gbk').encode('utf-8'))
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main() |