76 lines
1.8 KiB
Python
76 lines
1.8 KiB
Python
|
# encoding: UTF-8
|
||
|
|
||
|
__author__ = 'CHENXY'
|
||
|
|
||
|
from xtp_data_type import *
|
||
|
|
||
|
type_dict = {
|
||
|
'uint64_t': 'int',
|
||
|
'uint32_t': 'int',
|
||
|
'int64_t': 'int',
|
||
|
'char': 'string',
|
||
|
'double': 'float'
|
||
|
}
|
||
|
|
||
|
typedefDict.update(type_dict)
|
||
|
|
||
|
|
||
|
def main():
|
||
|
"""主函数"""
|
||
|
fcpp = open('xquote_api_struct.h', 'r')
|
||
|
fpy = open('xtp_struct_quote.py', 'w')
|
||
|
|
||
|
fpy.write('# encoding: UTF-8\n')
|
||
|
fpy.write('\n')
|
||
|
fpy.write('structDict = {}\n')
|
||
|
fpy.write('\n')
|
||
|
|
||
|
for line in 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 ' ' == line[0:4] or '\t' == line[0]:
|
||
|
content = line.split(' ')
|
||
|
content = [k for k in content if k]
|
||
|
print content
|
||
|
typedef = content[0].replace('\t', '')
|
||
|
type_ = typedefDict[typedef]
|
||
|
|
||
|
variable = content[1]
|
||
|
variable = variable.replace(';', "")
|
||
|
variable = variable.replace('\n', "")
|
||
|
if '[' in variable:
|
||
|
k = variable.index('[')
|
||
|
variable = variable[0:k]
|
||
|
|
||
|
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()
|