Mercurial > pidgin.yaz
diff src/dbus-analyze-types.py @ 11146:1c5398ccbeb0
[gaim-migrate @ 13217]
Gaim-DBUS signal export works with DBUS >= 0.35
Various gaim API functions available through DBUS
committer: Tailor Script <tailor@pidgin.im>
author | Piotr Zielinski <zielaj> |
---|---|
date | Fri, 22 Jul 2005 19:47:29 +0000 |
parents | |
children | ebb02ea3c789 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/dbus-analyze-types.py Fri Jul 22 19:47:29 2005 +0000 @@ -0,0 +1,79 @@ +# This program takes a C header/source as the input and produces +# +# with --keyword=enum: the list of all enums +# with --keyword=struct: the list of all structs +# +# the output styles: +# +# --enum DBUS_POINTER_NAME1, +# DBUS_POINTER_NAME2, +# DBUS_POINTER_NAME3, +# +# --list NAME1 +# NAME2 +# NAME3 +# + + +import re +import sys + +myinput = iter(sys.stdin) + +def outputenum(name): + print "DBUS_POINTER_%s," % name + +def outputdeclare(name): + print "DECLARE_TYPE(%s, NONE);" % name + +def outputtext(name): + print name + +myoutput = outputtext +keyword = "struct" + +for arg in sys.argv[1:]: + if arg[0:2] == "--": + mylist = arg[2:].split("=") + command = mylist[0] + if len(mylist) > 1: + value = mylist[1] + else: + value = None + + if command == "enum": + myoutput = outputenum + if command == "declare": + myoutput = outputdeclare + if command == "list": + myoutput = outputtext + if command == "keyword": + keyword = value + + +structregexp1 = re.compile(r"^(typedef\s+)?%s\s+\w+\s+(\w+)\s*;" % keyword) +structregexp2 = re.compile(r"^(typedef\s+)?%s" % keyword) +structregexp3 = re.compile(r"^}\s+(\w+)\s*;") + +for line in myinput: + match = structregexp1.match(line) + if match is not None: + myoutput(match.group(2)) + continue + + match = structregexp2.match(line) + if match is not None: + while True: + line = myinput.next() + match = structregexp3.match(line) + if match is not None: + myoutput(match.group(1)) + break + if line[0] not in [" ", "\t", "{", "\n"]: + break + + + + + +