vnpy/vn.ksotp/pyscript/generate_struct.py
WOLF 47d8f1d0d3 增加金仕达期权接口的封装vn.ksotp,并已加入vn.trader。
同时对vn.trader的CTA模块进行了一些修改。
2015-12-09 11:19:45 +08:00

63 lines
1.5 KiB
Python

# encoding: UTF-8
__author__ = 'CHENXY'
from ksotp_data_type import *
def main():
"""主函数"""
fcpp = open('KSOTPUserApiStruct.h', 'r')
fpy = open('ksotp_struct.py', 'w')
fpy.write('# encoding: UTF-8\n')
fpy.write('\n')
fpy.write('structDict = {}\n')
fpy.write('\n')
for n, line in enumerate(fcpp):
print n
# 结构体申明注释
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 '\t' in line:
content = line.split('\t')
typedef = content[1]
try:
type_ = typedefDict[typedef]
except KeyError:
print content
print typedef
variable = content[2].replace(';\n', "")
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()