summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorTravis Reitter <treitter@gmail.com>2010-03-30 08:45:00 -0700
committerTravis Reitter <treitter@gmail.com>2010-03-30 08:45:00 -0700
commit9b3ed1a9306af4e1f6f893ea2163f98c926fb9ea (patch)
treebd8244884413fc446e34d616d02452c14e1d672f /tools
parentdaa60e413c9f8473b3a92c12dc60f33d54e25342 (diff)
downloadtelepathy-logger-9b3ed1a9306af4e1f6f893ea2163f98c926fb9ea.tar.gz
Make the extensions library public and perform some minor reorganization.
Diffstat (limited to 'tools')
-rw-r--r--tools/Makefile.am1
-rw-r--r--tools/glib-client-marshaller-gen.py59
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])()