~ubuntu-branches/ubuntu/natty/empathy/natty-updates

« back to all changes in this revision

Viewing changes to tools/glib-client-marshaller-gen.py

  • Committer: Bazaar Package Importer
  • Author(s): Sjoerd Simons
  • Date: 2008-03-10 16:39:07 UTC
  • mfrom: (1.1.13 upstream)
  • Revision ID: james.westby@ubuntu.com-20080310163907-tv41g2zmf0qqgi85
Tags: 0.22.0-1
New upstream release

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/usr/bin/python
 
2
 
 
3
import sys
 
4
import xml.dom.minidom
 
5
from string import ascii_letters, digits
 
6
 
 
7
 
 
8
from libglibcodegen import signal_to_marshal_name
 
9
 
 
10
 
 
11
NS_TP = "http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0"
 
12
 
 
13
class Generator(object):
 
14
 
 
15
    def __init__(self, dom, prefix):
 
16
        self.dom = dom
 
17
        self.marshallers = {}
 
18
        self.prefix = prefix
 
19
 
 
20
    def do_signal(self, signal):
 
21
        marshaller = signal_to_marshal_name(signal, self.prefix)
 
22
 
 
23
        assert '__' in marshaller
 
24
        rhs = marshaller.split('__', 1)[1].split('_')
 
25
 
 
26
        self.marshallers[marshaller] = rhs
 
27
 
 
28
    def __call__(self):
 
29
        signals = self.dom.getElementsByTagName('signal')
 
30
 
 
31
        for signal in signals:
 
32
            self.do_signal(signal)
 
33
 
 
34
        print 'void'
 
35
        print '%s_register_dbus_glib_marshallers (void)' % self.prefix
 
36
        print '{'
 
37
 
 
38
        all = self.marshallers.keys()
 
39
        all.sort()
 
40
        for marshaller in all:
 
41
            rhs = self.marshallers[marshaller]
 
42
 
 
43
            print '  dbus_g_object_register_marshaller (%s,' % marshaller
 
44
            print '      G_TYPE_NONE,       /* return */'
 
45
            for type in rhs:
 
46
                print '      G_TYPE_%s,' % type.replace('VOID', 'NONE')
 
47
            print '      G_TYPE_INVALID);'
 
48
 
 
49
        print '}'
 
50
 
 
51
 
 
52
def types_to_gtypes(types):
 
53
    return [type_to_gtype(t)[1] for t in types]
 
54
 
 
55
if __name__ == '__main__':
 
56
    argv = sys.argv[1:]
 
57
    dom = xml.dom.minidom.parse(argv[0])
 
58
 
 
59
    Generator(dom, argv[1])()