Wed, 28 Sep 2016 09:32:19 -0500
Merged in CMaiku/pidgin (pull request #136)
Windows build fixes
|
27568
437768598637
Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
1 | # This program takes a C source as the input and produces the list of |
|
437768598637
Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
2 | # all signals registered. |
|
437768598637
Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
3 | # |
|
437768598637
Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
4 | # Output is: |
|
437768598637
Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
5 | # <signal name="Changed"> |
|
437768598637
Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
6 | # <arg name="new_value" type="b"/> |
|
437768598637
Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
7 | # </signal> |
|
37983
7d134a4a87b2
Ensure all Python scripts are Py3k compatible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
37936
diff
changeset
|
8 | from __future__ import absolute_import, division, print_function |
|
37936
65e477a02dd6
Refactor DBus Python scripts to avoid redirection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33932
diff
changeset
|
9 | |
|
65e477a02dd6
Refactor DBus Python scripts to avoid redirection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33932
diff
changeset
|
10 | import argparse |
|
65e477a02dd6
Refactor DBus Python scripts to avoid redirection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33932
diff
changeset
|
11 | import fileinput |
|
27568
437768598637
Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
12 | import re |
|
437768598637
Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
13 | import sys |
|
437768598637
Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
14 | |
|
37984
6a5ca046a90d
Make all Python files PEP8 compatible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
37983
diff
changeset
|
15 | |
|
27568
437768598637
Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
16 | # List "excluded" contains signals that shouldn't be exported via |
|
437768598637
Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
17 | # DBus. If you remove a signal from this list, please make sure |
|
437768598637
Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
18 | # that it does not break "make" with the configure option |
|
437768598637
Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
19 | # "--enable-dbus" turned on. |
|
437768598637
Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
20 | |
|
37984
6a5ca046a90d
Make all Python files PEP8 compatible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
37983
diff
changeset
|
21 | excluded = [ |
|
27568
437768598637
Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
22 | # purple_dbus_signal_emit_purple prevents our "dbus-method-called" |
|
437768598637
Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
23 | # signal from being propagated to dbus. |
|
37984
6a5ca046a90d
Make all Python files PEP8 compatible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
37983
diff
changeset
|
24 | "dbus-method-called", |
|
6a5ca046a90d
Make all Python files PEP8 compatible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
37983
diff
changeset
|
25 | ] |
|
27568
437768598637
Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
26 | |
|
37984
6a5ca046a90d
Make all Python files PEP8 compatible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
37983
diff
changeset
|
27 | registerregex = re.compile( |
|
6a5ca046a90d
Make all Python files PEP8 compatible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
37983
diff
changeset
|
28 | "purple_signal_register[^;]+\"([\w\-]+)\"[^;]+(purple_marshal_\w+)[^;]+;") |
|
27568
437768598637
Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
29 | nameregex = re.compile('[-_][a-z]') |
|
437768598637
Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
30 | |
|
37936
65e477a02dd6
Refactor DBus Python scripts to avoid redirection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33932
diff
changeset
|
31 | parser = argparse.ArgumentParser() |
|
65e477a02dd6
Refactor DBus Python scripts to avoid redirection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33932
diff
changeset
|
32 | parser.add_argument('input', nargs='*', |
|
65e477a02dd6
Refactor DBus Python scripts to avoid redirection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33932
diff
changeset
|
33 | help='Input files (or stdin if not specified)') |
|
65e477a02dd6
Refactor DBus Python scripts to avoid redirection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33932
diff
changeset
|
34 | parser.add_argument('-o', '--output', type=argparse.FileType('w'), |
|
65e477a02dd6
Refactor DBus Python scripts to avoid redirection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33932
diff
changeset
|
35 | help='Output to file instead of stdout') |
|
65e477a02dd6
Refactor DBus Python scripts to avoid redirection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33932
diff
changeset
|
36 | cmd_args = parser.parse_args() |
|
65e477a02dd6
Refactor DBus Python scripts to avoid redirection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33932
diff
changeset
|
37 | |
|
37984
6a5ca046a90d
Make all Python files PEP8 compatible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
37983
diff
changeset
|
38 | print("/* Generated by %s. Do not edit! */" % (sys.argv[0], ), |
|
37936
65e477a02dd6
Refactor DBus Python scripts to avoid redirection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33932
diff
changeset
|
39 | file=cmd_args.output) |
|
65e477a02dd6
Refactor DBus Python scripts to avoid redirection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33932
diff
changeset
|
40 | print("const char *dbus_signals = ", file=cmd_args.output) |
|
65e477a02dd6
Refactor DBus Python scripts to avoid redirection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33932
diff
changeset
|
41 | input = ''.join(list(fileinput.input(cmd_args.input))) |
|
65e477a02dd6
Refactor DBus Python scripts to avoid redirection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33932
diff
changeset
|
42 | for match in registerregex.finditer(input): |
|
27568
437768598637
Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
43 | signal = match.group(1) |
|
437768598637
Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
44 | marshal = match.group(2) |
|
437768598637
Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
45 | if signal in excluded: |
|
437768598637
Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
46 | continue |
|
437768598637
Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
47 | |
|
37984
6a5ca046a90d
Make all Python files PEP8 compatible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
37983
diff
changeset
|
48 | signal = nameregex.sub(lambda x: x.group()[1].upper(), '-' + signal) |
|
6a5ca046a90d
Make all Python files PEP8 compatible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
37983
diff
changeset
|
49 | print("\" <signal name='%s'>\\n\"" % (signal, ), file=cmd_args.output) |
|
27568
437768598637
Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
50 | |
|
437768598637
Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
51 | args = marshal.split('_') |
|
437768598637
Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
52 | # ['purple', 'marshal', <return type>, '', args...] |
|
437768598637
Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
53 | if len(args) > 4: |
|
437768598637
Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
54 | for arg in args[4:]: |
|
437768598637
Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
55 | if arg == "POINTER": |
|
437768598637
Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
56 | type = 'p' |
|
437768598637
Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
57 | elif arg == "ENUM": |
|
437768598637
Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
58 | type = 'i' |
|
437768598637
Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
59 | elif arg == "INT": |
|
437768598637
Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
60 | type = 'i' |
|
437768598637
Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
61 | elif arg == "UINT": |
|
437768598637
Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
62 | type = 'u' |
|
437768598637
Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
63 | elif arg == "INT64": |
|
437768598637
Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
64 | type = 'x' |
|
437768598637
Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
65 | elif arg == "UINT64": |
|
437768598637
Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
66 | type = 't' |
|
437768598637
Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
67 | elif arg == "BOOLEAN": |
|
437768598637
Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
68 | type = 'b' |
|
37984
6a5ca046a90d
Make all Python files PEP8 compatible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
37983
diff
changeset
|
69 | print("\" <arg type='%s'/>\\n\"" % (type, ), |
|
6a5ca046a90d
Make all Python files PEP8 compatible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
37983
diff
changeset
|
70 | file=cmd_args.output) |
|
27568
437768598637
Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
71 | |
|
37936
65e477a02dd6
Refactor DBus Python scripts to avoid redirection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33932
diff
changeset
|
72 | print("\" </signal>\\n\"", file=cmd_args.output) |
|
27568
437768598637
Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
73 | |
|
37936
65e477a02dd6
Refactor DBus Python scripts to avoid redirection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33932
diff
changeset
|
74 | print(";", file=cmd_args.output) |