libpurple/dbus-analyze-signals.py

branch
release-2.x.y
changeset 33932
c49bfe98716d
parent 31328
b2939f1d30af
child 37936
65e477a02dd6
child 38313
38a40ddbb9b7
equal deleted inserted replaced
33897:f7d55c9c57d3 33932:c49bfe98716d
3 # 3 #
4 # Output is: 4 # Output is:
5 # <signal name="Changed"> 5 # <signal name="Changed">
6 # <arg name="new_value" type="b"/> 6 # <arg name="new_value" type="b"/>
7 # </signal> 7 # </signal>
8 8 from __future__ import print_function
9 import re 9 import re
10 import sys 10 import sys
11 11
12 # List "excluded" contains signals that shouldn't be exported via 12 # List "excluded" contains signals that shouldn't be exported via
13 # DBus. If you remove a signal from this list, please make sure 13 # DBus. If you remove a signal from this list, please make sure
21 ] 21 ]
22 22
23 registerregex = re.compile("purple_signal_register[^;]+\"([\w\-]+)\"[^;]+(purple_marshal_\w+)[^;]+;") 23 registerregex = re.compile("purple_signal_register[^;]+\"([\w\-]+)\"[^;]+(purple_marshal_\w+)[^;]+;")
24 nameregex = re.compile('[-_][a-z]') 24 nameregex = re.compile('[-_][a-z]')
25 25
26 print "/* Generated by %s. Do not edit! */" % sys.argv[0] 26 print("/* Generated by %s. Do not edit! */" % sys.argv[0])
27 print "const char *dbus_signals = " 27 print("const char *dbus_signals = ")
28 for match in registerregex.finditer(sys.stdin.read()): 28 for match in registerregex.finditer(sys.stdin.read()):
29 signal = match.group(1) 29 signal = match.group(1)
30 marshal = match.group(2) 30 marshal = match.group(2)
31 if signal in excluded: 31 if signal in excluded:
32 continue 32 continue
33 33
34 signal = nameregex.sub(lambda x:x.group()[1].upper(), '-'+signal) 34 signal = nameregex.sub(lambda x:x.group()[1].upper(), '-'+signal)
35 print "\" <signal name='%s'>\\n\""%signal 35 print("\" <signal name='%s'>\\n\"" % signal)
36 36
37 args = marshal.split('_') 37 args = marshal.split('_')
38 # ['purple', 'marshal', <return type>, '', args...] 38 # ['purple', 'marshal', <return type>, '', args...]
39 if len(args) > 4: 39 if len(args) > 4:
40 for arg in args[4:]: 40 for arg in args[4:]:
50 type = 'x' 50 type = 'x'
51 elif arg == "UINT64": 51 elif arg == "UINT64":
52 type = 't' 52 type = 't'
53 elif arg == "BOOLEAN": 53 elif arg == "BOOLEAN":
54 type = 'b' 54 type = 'b'
55 print "\" <arg type='%s'/>\\n\""%type 55 print("\" <arg type='%s'/>\\n\"" % type)
56 56
57 print "\" </signal>\\n\"" 57 print("\" </signal>\\n\"")
58 58
59 print ";" 59 print(";")
60 60

mercurial