def build(object_name, c_type): ipc = genipc.parse_xml('../src/ipc.xml') Indenter.printline('/* This code is automatically generated from foobar. Do not edit. */') Indenter.printline() Indenter.printline("#include <xmmsc/xmmsv.h>") for object in ipc.objects: if object.name == object_name: for method in object.methods: emit_method_define_code(object, method, c_type) Indenter.printline() Indenter.printline('static void') Indenter.printline('xmms_%s_register_ipc_commands (xmms_object_t *%s_object)' % (object.name, object.name)) Indenter.enter('{') Indenter.printline('xmms_ipc_object_register (%i, %s_object);' % (object.id, object.name)) Indenter.printline() for method in object.methods: emit_method_add_code(object, method) Indenter.printline() for broadcast in object.broadcasts: Indenter.printline('xmms_ipc_broadcast_register (%s_object, %i);' % (object.name, broadcast.id)) Indenter.printline() for signal in object.signals: Indenter.printline('xmms_ipc_signal_register (%s_object, %i);' % (object.name, signal.id)) Indenter.leave('}') Indenter.printline() Indenter.printline('static void') Indenter.printline('xmms_%s_unregister_ipc_commands (void)' % object.name) Indenter.enter('{') for broadcast in object.broadcasts: Indenter.printline('xmms_ipc_broadcast_unregister (%i);' % broadcast.id) Indenter.printline() for signal in object.signals: Indenter.printline('xmms_ipc_signal_unregister (%i);' % signal.id) Indenter.printline() Indenter.printline('xmms_ipc_object_unregister (%i);' % object.id) Indenter.leave('}')
def build(object_name, c_type): ipc = genipc.parse_xml('../src/ipc.xml') Indenter.printline('/* This code is automatically generated from foobar. Do not edit. */') Indenter.printline() Indenter.printline("#include <xmmsc/xmmsv.h>") for object in ipc.objects: if object.name == object_name: for method in object.methods: emit_method_define_code(object, method, c_type) Indenter.printline() Indenter.printline('static void') Indenter.printline('xmms_%s_register_ipc_commands (xmms_object_t *%s_object)' % (object.name, object.name)) Indenter.enter('{') Indenter.printline('xmms_ipc_object_register (%s, %s_object);' % (_enum_value(object.id), object.name)) Indenter.printline() for method in object.methods: emit_method_add_code(object, method) Indenter.printline() for broadcast in object.broadcasts: Indenter.printline('xmms_ipc_broadcast_register (%s_object, %s);' % (object.name, _enum_value(broadcast.id))) Indenter.printline() for signal in object.signals: Indenter.printline('xmms_ipc_signal_register (%s_object, %s);' % (object.name, _enum_value(signal.id))) Indenter.leave('}') Indenter.printline() Indenter.printline('static void') Indenter.printline('xmms_%s_unregister_ipc_commands (void)' % object.name) Indenter.enter('{') for broadcast in object.broadcasts: Indenter.printline('xmms_ipc_broadcast_unregister (%s);' % _enum_value(broadcast.id)) Indenter.printline() for signal in object.signals: Indenter.printline('xmms_ipc_signal_unregister (%s);' % _enum_value(signal.id)) Indenter.printline() Indenter.printline('xmms_ipc_object_unregister (%s);' % _enum_value(object.id)) Indenter.leave('}')
def build(): ipc = genipc.parse_xml('../src/ipc.xml') print(HEADER_PROLOG) print('') for n, c in ipc.constants.items(): define_constant(c) print('') for n, e in ipc.enums.items(): build_enum(e, ipc.enums) print('') print(HEADER_EPILOG)
if arguments: Indenter.printline() Indenter.printline("message = new xmmsclient.Message()") if not name_prefix: Indenter.printline("message.object_id = @object_id") Indenter.printline("message.command_id = %i" % method.id) s = ", ".join(a.name for a in arguments) Indenter.printline("message.args = [%s]" % s) elif name_prefix == "signal_": Indenter.printline("message.object_id = 0") Indenter.printline("message.command_id = 32") Indenter.printline("message.args = [%i]" % method.id) elif name_prefix == "broadcast_": Indenter.printline("message.object_id = 0") Indenter.printline("message.command_id = 33") Indenter.printline("message.args = [%i]" % method.id) Indenter.printline() if name_prefix == "signal_": Indenter.printline("return @client.send_signal_message message, %i" % method.id) else: Indenter.printline("return @client.send_message message") Indenter.leave("") Indenter.printline() ipc = genipc.parse_xml(sys.argv[1]) build(ipc)