def METHOD_NAME(self, temp_file_h, temp_file_c, save_path):
    interfaces = self.interfaces
    typedefs_list = []
    interfaces_list = []
    for type in interfaces:
        path = os.path.abspath(save_path)
        full_path = "{}/{}".format(path, type.lower())
        if not os.path.exists(full_path):
            os.makedirs(full_path)
        interface = interfaces[type]
        names = list(interface.keys())
        names.sort()
        for name in names:
            inter_obj = interface[name]
            save_to_h = "{}/{}.h".format(full_path, inter_obj["c_name"])
            save_to_c = "{}/{}.c".format(full_path, inter_obj["c_name"])
            # Make and Save *.h
            lxb_temp_h = LXB.Temp(temp_file_h, save_to_h)
            if type == "DOM":
                lxb_temp_h.pattern_append("%%mraw%%", "document->mraw")
            else:
                lxb_temp_h.pattern_append("%%mraw%%", "document->mem->mraw")
            lxb_temp_h.pattern_append("%%M_PREFIX%%", type.upper())
            lxb_temp_h.pattern_append("%%M_NAME%%", inter_obj["c_name"].upper())
            lxb_temp_h.pattern_append("%%prefix%%", type.lower())
            lxb_temp_h.pattern_append("%%name%%", inter_obj["c_name"])
            typedef_name = self.make_type_name(type, inter_obj)
            lxb_temp_h.pattern_append("%%type%%", typedef_name)
            def_name = inter_obj["c_name"]
            def_name = def_name.replace('_element', '')
            interfaces_list.append("#define {}_{}_interface_{}(obj) (({} *) obj)".format(
                self.prefix, type.lower(), def_name, typedef_name)
            )
            vars = self.make_vars(type, inter_obj)
            lxb_temp_h.pattern_append("%%vars%%", "\n    ".join(vars))
            includes = self.make_inherit_includes(type, inter_obj)
            lxb_temp_h.pattern_append("%%includes%%", "\n".join(includes) + "\n")
            lxb_temp_h.build()
            lxb_temp_h.save()
            # Make and Save *.c
            lxb_temp_c = LXB.Temp(temp_file_c, save_to_c)
            if type == "DOM":
                lxb_temp_c.pattern_append("%%mraw%%", "document->mraw")
            else:
                lxb_temp_c.pattern_append("%%mraw%%", "document->mem->mraw")
            lxb_temp_c.pattern_append("%%prefix%%", type.lower())
            lxb_temp_c.pattern_append("%%name%%", inter_obj["c_name"])
            lxb_temp_c.pattern_append("%%type%%", typedef_name)
            lxb_temp_c.build()
            lxb_temp_c.save()
            # Print typedefs
            struct = "struct {}_{}_{}".format(self.prefix, type.lower(), inter_obj["c_name"])
            typedefs_list.append( "typedef {} {};".format(struct, typedef_name) )
    if not WITHOUT_PRINT:
        print("\n".join(typedefs_list))
        print("\n".join(interfaces_list))