Mercurial > pidgin.yaz
diff libgaim/dbus-analyze-types.py @ 14192:60b1bc8dbf37
[gaim-migrate @ 16863]
Renamed 'core' to 'libgaim'
committer: Tailor Script <tailor@pidgin.im>
author | Evan Schoenberg <evan.s@dreskin.net> |
---|---|
date | Sat, 19 Aug 2006 01:50:10 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libgaim/dbus-analyze-types.py Sat Aug 19 01:50:10 2006 +0000 @@ -0,0 +1,75 @@ +# 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 + +options = {} + +def toprint(match, line): + if verbatim: + return line + else: + return pattern % match + +for arg in sys.argv[1:]: + if arg[0:2] == "--": + mylist = arg[2:].split("=",1) + command = mylist[0] + if len(mylist) > 1: + options[command] = mylist[1] + else: + options[command] = None + +keyword = options.get("keyword", "struct") +pattern = options.get("pattern", "%s") +verbatim = options.has_key("verbatim") + +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*;") + +print "/* Generated by %s. Do not edit! */" % sys.argv[0] + +myinput = iter(sys.stdin) + +for line in myinput: + match = structregexp1.match(line) + if match is not None: + print toprint(match.group(2), line) + continue + + match = structregexp2.match(line) + if match is not None: + while True: + if verbatim: + print line.rstrip() + line = myinput.next() + match = structregexp3.match(line) + if match is not None: + print toprint(match.group(1), line) + break + if line[0] not in [" ", "\t", "{", "\n"]: + if verbatim: + print line + break + + + + + +