src/dbus-analyze-types.py

Wed, 10 Aug 2005 21:16:37 +0000

author
Thomas Butter <tbutter@users.sourceforge.net>
date
Wed, 10 Aug 2005 21:16:37 +0000
changeset 11225
e888c207b994
parent 11171
a25653d60f9c
child 11331
6e06ed40a312
permissions
-rw-r--r--

[gaim-migrate @ 13361]
added STUN API to detect a NAT and the public ip

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,
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
10 # DBUS_POINTER_NAME3,
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
11 #
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
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
15 #
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
16
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
17
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
18 import re
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
19 import sys
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
20
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
21 keyword = "struct"
11171
a25653d60f9c [gaim-migrate @ 13272]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents: 11146
diff changeset
22 pattern = "%s"
11146
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
23
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
24 for arg in sys.argv[1:]:
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
25 if arg[0:2] == "--":
11171
a25653d60f9c [gaim-migrate @ 13272]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents: 11146
diff changeset
26 mylist = arg[2:].split("=",1)
11146
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
27 command = mylist[0]
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
28 if len(mylist) > 1:
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
29 value = mylist[1]
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
30 else:
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
31 value = None
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
32
11171
a25653d60f9c [gaim-migrate @ 13272]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents: 11146
diff changeset
33 if command == "pattern":
a25653d60f9c [gaim-migrate @ 13272]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents: 11146
diff changeset
34 pattern = value
11146
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
35 if command == "keyword":
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
36 keyword = value
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
37
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
38
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
39 structregexp1 = re.compile(r"^(typedef\s+)?%s\s+\w+\s+(\w+)\s*;" % keyword)
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
40 structregexp2 = re.compile(r"^(typedef\s+)?%s" % keyword)
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
41 structregexp3 = re.compile(r"^}\s+(\w+)\s*;")
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
42
11171
a25653d60f9c [gaim-migrate @ 13272]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents: 11146
diff changeset
43 myinput = iter(sys.stdin)
a25653d60f9c [gaim-migrate @ 13272]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents: 11146
diff changeset
44
11146
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
45 for line in myinput:
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
46 match = structregexp1.match(line)
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
47 if match is not None:
11171
a25653d60f9c [gaim-migrate @ 13272]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents: 11146
diff changeset
48 print pattern % match.group(2)
11146
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
49 continue
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
50
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
51 match = structregexp2.match(line)
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
52 if match is not None:
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
53 while True:
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
54 line = myinput.next()
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
55 match = structregexp3.match(line)
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
56 if match is not None:
11171
a25653d60f9c [gaim-migrate @ 13272]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents: 11146
diff changeset
57 print pattern % match.group(1)
11146
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
58 break
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
59 if line[0] not in [" ", "\t", "{", "\n"]:
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
60 break
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
61
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
62
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
63
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
64
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
65
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
66

mercurial