diff libpurple/dbus-analyze-types.py @ 15373:5fe8042783c1

Rename gtk/ and libgaim/ to pidgin/ and libpurple/
author Sean Egan <seanegan@gmail.com>
date Sat, 20 Jan 2007 02:32:10 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libpurple/dbus-analyze-types.py	Sat Jan 20 02:32:10 2007 +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
+        
+
+
+
+    
+