def __generate_message_data_item_complex_field(item_field, stream): to_generate_list =[] message = None class_name = convertClassName(item_field.get_class_name()) if class_name not in message_class_dict: message = 'class %s (Field):\n #%s\n fields = (\n'%(class_name, item_field.description) for k, v in item_field.field_dict.iteritems(): if isinstance(v, ProtocolDataItemArray) or isinstance(v, ProtocolDataItemList) or isinstance(v, ProtocolDataItemComplexField): to_generate_list.append(v) message += ' (\'%s\', %s),\n'%(k, convertClassName(v.get_class_name())) else: if v.type == 'string': message += ' (\'%s\', %s),\n' % (k, 'String') else: message += ' (\'%s\', \'%s\'),\n' % (k, v.type) message += ' )\n\n\n' message_class_dict[class_name] = 1 for data in to_generate_list: if isinstance(data, ProtocolDataItemArray): __generate_message_data_item_array(data,stream) elif isinstance(data, ProtocolDataItemList): __generate_message_data_item_list(data,stream) elif isinstance(data, ProtocolDataItemSingelField): __generate_message_data_item_single_field(data,stream) elif isinstance(data, ProtocolDataItemComplexField): __generate_message_data_item_complex_field(data,stream) if message: stream.write(message)
def __generate_message_data_item_complex_field(item_field, stream): to_generate_list = [] message = None class_name = convertClassName(item_field.get_class_name()) if class_name not in message_class_dict: message = 'class %s (Field):\n #%s\n fields = (\n' % ( class_name, item_field.description) for k, v in item_field.field_dict.iteritems(): if isinstance(v, ProtocolDataItemArray) or isinstance( v, ProtocolDataItemList) or isinstance( v, ProtocolDataItemComplexField): to_generate_list.append(v) message += ' (\'%s\', %s),\n' % ( k, convertClassName(v.get_class_name())) else: if v.type == 'string': message += ' (\'%s\', %s),\n' % (k, 'String') else: message += ' (\'%s\', \'%s\'),\n' % (k, v.type) message += ' )\n\n\n' message_class_dict[class_name] = 1 for data in to_generate_list: if isinstance(data, ProtocolDataItemArray): __generate_message_data_item_array(data, stream) elif isinstance(data, ProtocolDataItemList): __generate_message_data_item_list(data, stream) elif isinstance(data, ProtocolDataItemSingelField): __generate_message_data_item_single_field(data, stream) elif isinstance(data, ProtocolDataItemComplexField): __generate_message_data_item_complex_field(data, stream) if message: stream.write(message)
def __generate_message_data_item_list(item_list, stream): field = item_list.item_list[0] __generate_message_data_item_complex_field(field, stream) class_name = convertClassName(item_list.get_class_name()) if class_name not in message_class_dict: message = 'class %s (List):\n #%s\n Field = %s\n\n\n' % ( class_name, field.description, convertClassName(field.get_class_name())) stream.write(message) message_class_dict[class_name] = 1
def __generate_message_data_item_list(item_list, stream): field = item_list.item_list[0] __generate_message_data_item_complex_field(field,stream) class_name = convertClassName(item_list.get_class_name()) if class_name not in message_class_dict: message = 'class %s (List):\n #%s\n Field = %s\n\n\n'%(class_name, field.description, convertClassName(field.get_class_name())) stream.write(message) message_class_dict[class_name] = 1
def __generate_message_data_item_array(item_array, stream): field = item_array.item_list[0] class_name = convertClassName(item_array.get_class_name()) if class_name not in message_class_dict: if field.type == 'string': message = 'class %s (List):\n #%s\n Field = %s\n\n\n' % (class_name, field.description, 'String') else: message = 'class %s (Array):\n #%s\n field = \'%s\', \'%s\'\n\n\n' % (class_name, field.description, field.name, field.type) stream.write(message) message_class_dict[class_name] = 1
def __generate_message_data_item_array(item_array, stream): field = item_array.item_list[0] class_name = convertClassName(item_array.get_class_name()) if class_name not in message_class_dict: if field.type == 'string': message = 'class %s (List):\n #%s\n Field = %s\n\n\n' % ( class_name, field.description, 'String') else: message = 'class %s (Array):\n #%s\n field = \'%s\', \'%s\'\n\n\n' % ( class_name, field.description, field.name, field.type) stream.write(message) message_class_dict[class_name] = 1
def generateAs(protocols, currentdir, filename): read_str = '' write_str = '' for p in protocols: if p.request and p.request.data_list: write_str += '\n/**\n * %s\n * %s\n */\npublic function write%s():void{\n' % ( p.description, p.request.description, convertClassName(p.name)) write_str += ' var msgBody:ByteArray = new ByteArray();\n msgBody.endian = Endian.LITTLE_ENDIAN;\n' write_str += __generate_as_write_data_list(p.request.data_list, 0) write_str += ' super.send(msgBody);\n}\n' if p.response and p.response.data_list: read_str += '\n/**\n * %s\n * %s\n * read%s\n */\noverride protected function parseBodyHandle(msgHeadVo:MsgHeadVo,g2cProtocol:int,bytes:ByteArray):void{\n var code:int = msgHeadVo.code;\n var reason:int = msgHeadVo.reason;\n \n if(code == 1){\n' % ( p.description, p.response.description, convertClassName( p.name)) read_str += __generate_as_read_data_list(p.response.data_list, 1) read_str += ' }\n}\n' f = open(currentdir + data_as_dir + '/as/' + filename + '.as', 'w') f.write(read_str) f.write('\n\n') f.write(write_str) f.close()
def __generate_as_write_data_item_complex_field(item_field, name ='',tabs_num=0): rev = '' blank = ' ' blank *= tabs_num rev += '\n %s//TODO 写入类型为%s 对象%s,自己构造相关对象提供数据写入,或者替换相关变量!!!\n'%(blank, convertClassName(item_field.name), convertFieldName(name)) for k, v in item_field.field_dict.iteritems(): if isinstance(v, ProtocolDataItemArray): rev +=__generate_as_write_data_item_array(v, k, tabs_num) elif isinstance(v, ProtocolDataItemList): rev +=__generate_as_write_data_item_list(v, k, tabs_num) elif isinstance(v, ProtocolDataItemSingelField): rev +=__generate_as_write_data_item_single_field(v, k, tabs_num) elif isinstance(v, ProtocolDataItemComplexField): rev +=__generate_as_write_data_item_complex_field(v, k, tabs_num) return rev
def __generate_as_write_data_item_complex_field(item_field, name='', tabs_num=0): rev = '' blank = ' ' blank *= tabs_num rev += '\n %s//TODO 写入类型为%s 对象%s,自己构造相关对象提供数据写入,或者替换相关变量!!!\n' % ( blank, convertClassName(item_field.name), convertFieldName(name)) for k, v in item_field.field_dict.iteritems(): if isinstance(v, ProtocolDataItemArray): rev += __generate_as_write_data_item_array(v, k, tabs_num) elif isinstance(v, ProtocolDataItemList): rev += __generate_as_write_data_item_list(v, k, tabs_num) elif isinstance(v, ProtocolDataItemSingelField): rev += __generate_as_write_data_item_single_field(v, k, tabs_num) elif isinstance(v, ProtocolDataItemComplexField): rev += __generate_as_write_data_item_complex_field(v, k, tabs_num) return rev
def generateAs(protocols, currentdir, filename): read_str = '' write_str = '' for p in protocols: if p.request and p.request.data_list: write_str += '\n/**\n * %s\n * %s\n */\npublic function write%s():void{\n'%(p.description,p.request.description, convertClassName(p.name)) write_str += ' var msgBody:ByteArray = new ByteArray();\n msgBody.endian = Endian.LITTLE_ENDIAN;\n' write_str += __generate_as_write_data_list(p.request.data_list, 0) write_str +=' super.send(msgBody);\n}\n' if p.response and p.response.data_list: read_str += '\n/**\n * %s\n * %s\n * read%s\n */\noverride protected function parseBodyHandle(msgHeadVo:MsgHeadVo,g2cProtocol:int,bytes:ByteArray):void{\n var code:int = msgHeadVo.code;\n var reason:int = msgHeadVo.reason;\n \n if(code == 1){\n'%(p.description,p.response.description, convertClassName(p.name)) read_str += __generate_as_read_data_list(p.response.data_list, 1) read_str +=' }\n}\n' f = open(currentdir + data_as_dir + '/as/'+filename+'.as', 'w') f.write(read_str) f.write('\n\n') f.write(write_str) f.close()