def METHOD_NAME(f_out, functions, typedefs, structs, unions, enums, ident=4):
    """Text output for types and functions."""
    for sname, sinfo in structs.items():
        f_out.write('Struct' + '\n')
        f_out.write('Name: ' + sinfo.name_text + '\n')
        if sinfo.type_name_text:
            f_out.write('Typedef name: ' + sinfo.type_name_text + '\n')
        f_out.write('Data:' + '\n')
        for member in sinfo.members_list:
            f_out.write('Name: {}\ttype: {}'.format(member.name_text,
                        member.type_text))
            if hasattr(member, 'size'):
                f_out.write(' size: {}\n'.format(member.size))
            else:
                f_out.write('\n')
        f_out.write('\n')
    for fname, f_info in functions.items():
        f_out.write(f_info.decl + '\n')
        f_out.write('Name: ' + f_info.name + '\n')
        f_out.write('Return type: ' + f_info.ret_type_text + '\n')
        f_out.write('Parameters:' + '\n')
        for p in f_info.params:
            f_out.write('Name: {}\t\ttype: {} {}'.format(p.name_text,
                        p.type_text, p.annotations_text) + '\n')
        if f_info.vararg:
            f_out.write('Varargs: True' + '\n')
        f_out.write('\n')