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
+        
+
+
+
+    
+