libpurple/dbus-analyze-types.py

Mon, 12 Jun 2017 17:48:37 -0300

author
dx <dx@dxzone.com.ar>
date
Mon, 12 Jun 2017 17:48:37 -0300
changeset 38358
30ba44276e74
parent 37985
c3bab3be9695
parent 38313
38a40ddbb9b7
permissions
-rw-r--r--

Merge release-2.x.y into default

11146
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
1 # This program takes a C header/source as the input and produces
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
2 #
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
3 # with --keyword=enum: the list of all enums
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
4 # with --keyword=struct: the list of all structs
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
5 #
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
6 # the output styles:
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
7 #
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
8 # --enum DBUS_POINTER_NAME1,
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
9 # DBUS_POINTER_NAME2,
33932
c49bfe98716d Fix build and other scripts on Python3.
Ashish Gupta <ashmew2@gmail.com>
parents: 15435
diff changeset
10 # DBUS_POINTER_NAME3,
c49bfe98716d Fix build and other scripts on Python3.
Ashish Gupta <ashmew2@gmail.com>
parents: 15435
diff changeset
11 #
11146
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
12 # --list NAME1
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
13 # NAME2
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
14 # NAME3
33932
c49bfe98716d Fix build and other scripts on Python3.
Ashish Gupta <ashmew2@gmail.com>
parents: 15435
diff changeset
15 #
11146
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
16
38313
38a40ddbb9b7 Ensure all Python scripts are Py3k compatible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33932
diff changeset
17 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
18
65e477a02dd6 Refactor DBus Python scripts to avoid redirection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33932
diff changeset
19 import argparse
65e477a02dd6 Refactor DBus Python scripts to avoid redirection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33932
diff changeset
20 import fileinput
11146
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
21 import re
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
22 import sys
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
23
11331
6e06ed40a312 [gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents: 11171
diff changeset
24
6e06ed40a312 [gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents: 11171
diff changeset
25 def toprint(match, line):
37936
65e477a02dd6 Refactor DBus Python scripts to avoid redirection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33932
diff changeset
26 if args.verbatim:
11331
6e06ed40a312 [gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents: 11171
diff changeset
27 return line
6e06ed40a312 [gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents: 11171
diff changeset
28 else:
37936
65e477a02dd6 Refactor DBus Python scripts to avoid redirection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33932
diff changeset
29 return args.pattern % match
11146
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
30
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
31
37936
65e477a02dd6 Refactor DBus Python scripts to avoid redirection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33932
diff changeset
32 parser = argparse.ArgumentParser()
65e477a02dd6 Refactor DBus Python scripts to avoid redirection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33932
diff changeset
33 parser.add_argument('input', nargs='*',
65e477a02dd6 Refactor DBus Python scripts to avoid redirection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33932
diff changeset
34 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
35 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
36 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
37 parser.add_argument('--keyword', default='struct',
65e477a02dd6 Refactor DBus Python scripts to avoid redirection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33932
diff changeset
38 help='What keyword to search')
65e477a02dd6 Refactor DBus Python scripts to avoid redirection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33932
diff changeset
39 parser.add_argument('--pattern', default='%s',
65e477a02dd6 Refactor DBus Python scripts to avoid redirection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33932
diff changeset
40 help='String pattern used to print matches')
65e477a02dd6 Refactor DBus Python scripts to avoid redirection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33932
diff changeset
41 parser.add_argument('--verbatim', action='store_true',
65e477a02dd6 Refactor DBus Python scripts to avoid redirection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33932
diff changeset
42 help='Return full line of match instead of match itself')
65e477a02dd6 Refactor DBus Python scripts to avoid redirection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33932
diff changeset
43 args = parser.parse_args()
11331
6e06ed40a312 [gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents: 11171
diff changeset
44
37984
6a5ca046a90d Make all Python files PEP8 compatible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37983
diff changeset
45 structregexp1 = re.compile(
6a5ca046a90d Make all Python files PEP8 compatible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37983
diff changeset
46 r"^(typedef\s+)?%s\s+\w+\s+(\w+)\s*;" % (args.keyword, ))
6a5ca046a90d Make all Python files PEP8 compatible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37983
diff changeset
47 structregexp2 = re.compile(r"^(typedef\s+)?%s" % (args.keyword, ))
11146
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
48 structregexp3 = re.compile(r"^}\s+(\w+)\s*;")
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
49
37984
6a5ca046a90d Make all Python files PEP8 compatible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37983
diff changeset
50 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
51 file=args.output)
11331
6e06ed40a312 [gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents: 11171
diff changeset
52
37936
65e477a02dd6 Refactor DBus Python scripts to avoid redirection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33932
diff changeset
53 myinput = fileinput.input(args.input)
11171
a25653d60f9c [gaim-migrate @ 13272]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents: 11146
diff changeset
54
11146
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
55 for line in myinput:
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
56 match = structregexp1.match(line)
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
57 if match is not None:
37936
65e477a02dd6 Refactor DBus Python scripts to avoid redirection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33932
diff changeset
58 print(toprint(match.group(2), line), file=args.output)
11146
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
59 continue
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
60
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
61 match = structregexp2.match(line)
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
62 if match is not None:
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
63 while True:
37936
65e477a02dd6 Refactor DBus Python scripts to avoid redirection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33932
diff changeset
64 if args.verbatim:
65e477a02dd6 Refactor DBus Python scripts to avoid redirection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33932
diff changeset
65 print(line.rstrip(), file=args.output)
33932
c49bfe98716d Fix build and other scripts on Python3.
Ashish Gupta <ashmew2@gmail.com>
parents: 15435
diff changeset
66 line = next(myinput)
11146
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
67 match = structregexp3.match(line)
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
68 if match is not None:
37936
65e477a02dd6 Refactor DBus Python scripts to avoid redirection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33932
diff changeset
69 print(toprint(match.group(1), line), file=args.output)
11146
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
70 break
37985
c3bab3be9695 Remove some "clever" Python code.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37984
diff changeset
71 if line[0] not in " \t{\n":
37936
65e477a02dd6 Refactor DBus Python scripts to avoid redirection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33932
diff changeset
72 if args.verbatim:
65e477a02dd6 Refactor DBus Python scripts to avoid redirection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33932
diff changeset
73 print(line, file=args.output)
11146
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
74 break

mercurial