def append_header_arr(obj, header, prefix): ''' Description: Write c header file of array Interface: None History: 2019-06-17 ''' if not obj.subtypobj or obj.subtypname: return header.write("typedef struct {\n") for i in obj.subtypobj: if i.typ == 'array': c_typ = helpers.get_prefixed_pointer(i.name, i.subtyp, prefix) or \ helpers.get_map_c_types(i.subtyp) if i.subtypobj is not None: c_typ = helpers.get_name_substr(i.name, prefix) if not helpers.judge_complex(i.subtyp): header.write(" %s%s*%s;\n" % (c_typ, " " if '*' not in c_typ else "", \ i.fixname)) else: header.write(" %s **%s;\n" % (c_typ, i.fixname)) header.write(" size_t %s;\n\n" % (i.fixname + "_len")) else: c_typ = helpers.get_prefixed_pointer(i.name, i.typ, prefix) or \ helpers.get_map_c_types(i.typ) header.write(" %s%s%s;\n" % (c_typ, " " if '*' not in c_typ else "", i.fixname)) for i in obj.subtypobj: if helpers.judge_data_type(i.typ) or i.typ == 'boolean': header.write(" unsigned int %s_present : 1;\n" % (i.fixname)) typename = helpers.get_name_substr(obj.name, prefix) header.write("}\n%s;\n\n" % typename) header.write("void free_%s (%s *ptr);\n\n" % (typename, typename)) header.write("%s *make_%s (yajl_val tree, const struct parser_context *ctx, parser_error *err);"\ "\n\n" % (typename, typename))
def append_header_child_arr(child, header, prefix): ''' Description: Write c header file of array of child Interface: None History: 2019-06-17 ''' if helpers.get_map_c_types(child.subtyp) != "": c_typ = helpers.get_map_c_types(child.subtyp) elif helpers.valid_basic_map_name(child.subtyp): c_typ = '%s *' % helpers.make_basic_map_name(child.subtyp) elif child.subtypname is not None: c_typ = child.subtypname elif child.subtypobj is not None: c_typ = helpers.get_name_substr(child.name, prefix) else: c_typ = helpers.get_prefixed_pointer(child.name, child.subtyp, prefix) if helpers.valid_basic_map_name(child.subtyp): header.write( " %s **%s;\n" % (helpers.make_basic_map_name(child.subtyp), child.fixname)) elif not helpers.judge_complex(child.subtyp): header.write(" %s%s*%s;\n" % (c_typ, " " if '*' not in c_typ else "", child.fixname)) else: header.write(" %s%s**%s;\n" % (c_typ, " " if '*' not in c_typ else "", child.fixname)) header.write(" size_t %s;\n\n" % (child.fixname + "_len"))
def append_header_child_others(child, header, prefix): ''' Description: Write c header file of others of child Interface: None History: 2019-06-17 ''' if helpers.get_map_c_types(child.typ) != "": c_typ = helpers.get_map_c_types(child.typ) elif helpers.valid_basic_map_name(child.typ): c_typ = '%s *' % helpers.make_basic_map_name(child.typ) elif child.subtypname: c_typ = helpers.get_prefixed_pointer(child.subtypname, child.typ, "") else: c_typ = helpers.get_prefixed_pointer(child.name, child.typ, prefix) header.write(" %s%s%s;\n\n" % (c_typ, " " if '*' not in c_typ else "", child.fixname))
def header_reflect_top_array(obj, prefix, header): c_typ = helpers.get_prefixed_pointer(obj.name, obj.subtyp, prefix) or \ helpers.get_map_c_types(obj.subtyp) if obj.subtypobj is not None: c_typ = helpers.get_name_substr(obj.name, prefix) + " *" if c_typ == "": return typename = helpers.get_top_array_type_name(obj.name, prefix) header.write("typedef struct {\n") if obj.doublearray: header.write(" %s%s**items;\n" % (c_typ, " " if '*' not in c_typ else "")) header.write(" size_t *subitem_lens;\n\n") else: header.write(" %s%s*items;\n" % (c_typ, " " if '*' not in c_typ else "")) header.write(" size_t len;\n\n") header.write("}\n%s;\n\n" % (typename)) header.write("void free_%s (%s *ptr);\n\n" % (typename, typename)) header.write("%s *%s_parse_file(const char *filename, const struct "\ "parser_context *ctx, parser_error *err);\n\n" % (typename, typename)) header.write("%s *%s_parse_file_stream(FILE *stream, const struct "\ "parser_context *ctx, parser_error *err);\n\n" % (typename, typename)) header.write("%s *%s_parse_data(const char *jsondata, const struct "\ "parser_context *ctx, parser_error *err);\n\n" % (typename, typename)) header.write("char *%s_generate_json(const %s *ptr, "\ "const struct parser_context *ctx, parser_error *err);\n\n" % (typename, typename))
def append_header_map_str_obj(obj, header, prefix): ''' Description: Write c header file of mapStringObject Interface: None History: 2019-06-17 ''' child = obj.children[0] header.write("typedef struct {\n") header.write(" char **keys;\n") if helpers.valid_basic_map_name(child.typ): c_typ = helpers.get_prefixed_pointer("", child.typ, "") elif child.subtypname: c_typ = child.subtypname else: c_typ = helpers.get_prefixed_pointer(child.name, child.typ, prefix) header.write(" %s%s*%s;\n" % (c_typ, " " if '*' not in c_typ else "", child.fixname)) header.write(" size_t len;\n")