aboutsummaryrefslogtreecommitdiffstats
path: root/gnome-2-26/tools/glib-signals-marshal-gen.py
diff options
context:
space:
mode:
authorXavier Claessens <xclaesse@src.gnome.org>2009-03-17 02:34:54 +0800
committerXavier Claessens <xclaesse@src.gnome.org>2009-03-17 02:34:54 +0800
commit2baaa7ae3c3ac983a8019cd93a73426c7e081735 (patch)
tree482c49b5b4f5b3d6b4427642ba8609114503fade /gnome-2-26/tools/glib-signals-marshal-gen.py
parentbbacde3ff32a1983e7f37eea2986ccfe8f660f3f (diff)
downloadgsoc2013-empathy-2baaa7ae3c3ac983a8019cd93a73426c7e081735.tar
gsoc2013-empathy-2baaa7ae3c3ac983a8019cd93a73426c7e081735.tar.gz
gsoc2013-empathy-2baaa7ae3c3ac983a8019cd93a73426c7e081735.tar.bz2
gsoc2013-empathy-2baaa7ae3c3ac983a8019cd93a73426c7e081735.tar.lz
gsoc2013-empathy-2baaa7ae3c3ac983a8019cd93a73426c7e081735.tar.xz
gsoc2013-empathy-2baaa7ae3c3ac983a8019cd93a73426c7e081735.tar.zst
gsoc2013-empathy-2baaa7ae3c3ac983a8019cd93a73426c7e081735.zip
Tagged for release 2.26.0.
svn path=/tags/EMPATHY_2_26_0/; revision=2700
Diffstat (limited to 'gnome-2-26/tools/glib-signals-marshal-gen.py')
-rw-r--r--gnome-2-26/tools/glib-signals-marshal-gen.py55
1 files changed, 55 insertions, 0 deletions
diff --git a/gnome-2-26/tools/glib-signals-marshal-gen.py b/gnome-2-26/tools/glib-signals-marshal-gen.py
new file mode 100644
index 000000000..0d02c1341
--- /dev/null
+++ b/gnome-2-26/tools/glib-signals-marshal-gen.py
@@ -0,0 +1,55 @@
+#!/usr/bin/python
+
+import sys
+import xml.dom.minidom
+from string import ascii_letters, digits
+
+
+from libglibcodegen import signal_to_marshal_name, method_to_glue_marshal_name
+
+
+class Generator(object):
+
+ def __init__(self, dom):
+ self.dom = dom
+ self.marshallers = {}
+
+ def do_method(self, method):
+ marshaller = method_to_glue_marshal_name(method, 'PREFIX')
+
+ assert '__' in marshaller
+ rhs = marshaller.split('__', 1)[1].split('_')
+
+ self.marshallers[marshaller] = rhs
+
+ def do_signal(self, signal):
+ marshaller = signal_to_marshal_name(signal, 'PREFIX')
+
+ assert '__' in marshaller
+ rhs = marshaller.split('__', 1)[1].split('_')
+
+ self.marshallers[marshaller] = rhs
+
+ def __call__(self):
+ methods = self.dom.getElementsByTagName('method')
+
+ for method in methods:
+ self.do_method(method)
+
+ signals = self.dom.getElementsByTagName('signal')
+
+ for signal in signals:
+ self.do_signal(signal)
+
+ all = self.marshallers.keys()
+ all.sort()
+ for marshaller in all:
+ rhs = self.marshallers[marshaller]
+ if not marshaller.startswith('g_cclosure'):
+ print 'VOID:' + ','.join(rhs)
+
+if __name__ == '__main__':
+ argv = sys.argv[1:]
+ dom = xml.dom.minidom.parse(argv[0])
+
+ Generator(dom)()