def gen_java_inner_class_assign(self, struct, prefix): content = '' inner_class_type = struct["options"][predef.PredefInnerTypeClass] inner_var_name = struct["options"][predef.PredefInnerTypeName] inner_fields = structutil.get_inner_class_struct_fields(struct) start, end, step = structutil.get_inner_class_range(struct) assert start > 0 and end > 0 and step > 1 content += ' for (int i = %s; i < %s; i += %s) \n' % (start, end, step) content += ' {\n' content += ' %s item = new %s();\n' % (inner_class_type, inner_class_type) for n in range(step): field = inner_fields[n] origin_type = field['original_type_name'] typename = lang.map_java_type(origin_type) valuetext = 'record.get(i + %d)' % n content += ' if (!record.get(i + %d).isEmpty()) \n' % n content += ' {\n' content += self.gen_field_assign_stmt("item." + field['name'], typename, valuetext, 4) content += ' }\n' content += ' %s%s.add(item);\n' % (prefix, inner_var_name) content += ' }\n' return content
def parse_row_inner_obj(self, struct, row, inner_struct_fields): inner_obj_list = [] start, end, step = structutil.get_inner_class_range(struct) for n in range(start, end, step): inner_item = {} idx = n for field in inner_struct_fields: valuetext = row[idx] name = field['name'] value = self.parse_value(field['original_type_name'], valuetext) if self.use_snake_case: name = strutil.camel_to_snake(name) inner_item[name] = value idx += 1 inner_obj_list.append(inner_item) return inner_obj_list
def gen_inner_class_field_assgin_stmt(struct, prefix): content = '' inner_class_type = struct["options"][predef.PredefInnerTypeClass] inner_var_name = struct["options"][predef.PredefInnerTypeName] inner_fields = structutil.get_inner_class_struct_fields(struct) start, end, step = structutil.get_inner_class_range(struct) assert start > 0 and end > 0 and step > 1 content += ' for (int i = %s; i < %s; i += %s) \n' % (start, end, step) content += ' {\n' content += ' %s item;\n' % inner_class_type for n in range(step): field = inner_fields[n] origin_type = field['original_type_name'] typename = lang.map_cpp_type(origin_type) content += ' item.%s = to<%s>(row[i + %d]);\n' % ( field['name'], typename, n) content += ' %s%s.push_back(item);\n' % (prefix, inner_var_name) content += ' }\n' return content
def gen_cs_inner_class_assign(self, struct, prefix): content = '' inner_class_type = struct["options"][predef.PredefInnerTypeClass] inner_var_name = struct["options"][predef.PredefInnerTypeName] inner_fields = structutil.get_inner_class_struct_fields(struct) start, end, step = structutil.get_inner_class_range(struct) assert start > 0 and end > 0 and step > 1 content += ' %s%s = new %s[%d];\n' % (prefix, inner_var_name, inner_class_type, (end-start)/step) content += ' for (int i = %s, j = 0; i < %s; i += %s, j++) \n' % (start, end, step) content += ' {\n' content += ' %s item = new %s();\n' % (inner_class_type, inner_class_type) for n in range(step): field = inner_fields[n] origin_type = field['original_type_name'] typename = lang.map_cs_type(origin_type) valuetext = 'row[i + %d]' % n content += ' if (row[i + %d].Length > 0) \n' % n content += ' {\n' content += self.gen_field_assign_stmt("item." + field['name'], typename, valuetext, 4) content += ' }\n' content += ' %s%s[j] = item;\n' % (prefix, inner_var_name) content += ' }\n' return content
def gen_inner_class_parse(self, struct, prefix): content = '' inner_class_type = struct["options"][predef.PredefInnerTypeClass] inner_var_name = struct["options"][predef.PredefInnerTypeName] inner_fields = structutil.get_inner_class_struct_fields(struct) start, end, step = structutil.get_inner_class_range(struct) assert start > 0 and end > 0 and step > 1 content += ' for i := %s; i < %s; i += %s {\n' % (start, end, step) content += ' var item %s;\n' % inner_class_type for n in range(step): field = inner_fields[n] origin_type = field['original_type_name'] typename = lang.map_go_type(origin_type) field_name = field['camel_case_name'] valuetext = 'row[i + %d]' % n content += ' if row[i + %d] != "" {\n' % n content += self.gen_field_assign_stmt('item.' + field_name, typename, valuetext, 2, 'row') content += ' }\n' content += ' %s%s = append(%s%s, item);\n' % ( prefix, inner_var_name, prefix, inner_var_name) content += ' }\n' return content