diff options
author | Travis Reitter <treitter@gmail.com> | 2010-03-30 08:45:00 -0700 |
---|---|---|
committer | Travis Reitter <treitter@gmail.com> | 2010-03-30 08:45:00 -0700 |
commit | 9b3ed1a9306af4e1f6f893ea2163f98c926fb9ea (patch) | |
tree | bd8244884413fc446e34d616d02452c14e1d672f /tools | |
parent | daa60e413c9f8473b3a92c12dc60f33d54e25342 (diff) | |
download | telepathy-logger-9b3ed1a9306af4e1f6f893ea2163f98c926fb9ea.tar.gz |
Make the extensions library public and perform some minor reorganization.
Diffstat (limited to 'tools')
-rw-r--r-- | tools/Makefile.am | 1 | ||||
-rw-r--r-- | tools/glib-client-marshaller-gen.py | 59 |
2 files changed, 60 insertions, 0 deletions
diff --git a/tools/Makefile.am b/tools/Makefile.am index 64b2a47..14d4ab8 100644 --- a/tools/Makefile.am +++ b/tools/Makefile.am @@ -7,6 +7,7 @@ EXTRA_DIST = \ doc-generator.py \ doc-generator.xsl \ glib-client-gen.py \ + glib-client-marshaller-gen.py \ glib-ginterface-gen.py \ glib-gtypes-generator.py \ glib-interfaces-gen.py \ diff --git a/tools/glib-client-marshaller-gen.py b/tools/glib-client-marshaller-gen.py new file mode 100644 index 0000000..5444725 --- /dev/null +++ b/tools/glib-client-marshaller-gen.py @@ -0,0 +1,59 @@ +#!/usr/bin/python + +import sys +import xml.dom.minidom +from string import ascii_letters, digits + + +from libglibcodegen import signal_to_marshal_name + + +NS_TP = "http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0" + +class Generator(object): + + def __init__(self, dom, prefix): + self.dom = dom + self.marshallers = {} + self.prefix = prefix + + def do_signal(self, signal): + marshaller = signal_to_marshal_name(signal, self.prefix) + + assert '__' in marshaller + rhs = marshaller.split('__', 1)[1].split('_') + + self.marshallers[marshaller] = rhs + + def __call__(self): + signals = self.dom.getElementsByTagName('signal') + + for signal in signals: + self.do_signal(signal) + + print 'void' + print '%s_register_dbus_glib_marshallers (void)' % self.prefix + print '{' + + all = self.marshallers.keys() + all.sort() + for marshaller in all: + rhs = self.marshallers[marshaller] + + print ' dbus_g_object_register_marshaller (%s,' % marshaller + print ' G_TYPE_NONE, /* return */' + for type in rhs: + print ' G_TYPE_%s,' % type.replace('VOID', 'NONE') + print ' G_TYPE_INVALID);' + + print '}' + + +def types_to_gtypes(types): + return [type_to_gtype(t)[1] for t in types] + +if __name__ == '__main__': + argv = sys.argv[1:] + dom = xml.dom.minidom.parse(argv[0]) + + Generator(dom, argv[1])() |