diff src/dbus-analyze-functions.py @ 11175:57af14280b5f

[gaim-migrate @ 13280] added DBus introspection support committer: Tailor Script <tailor@pidgin.im>
author Piotr Zielinski <zielaj>
date Sat, 30 Jul 2005 17:05:38 +0000
parents ebb02ea3c789
children 744c0708d11f
line wrap: on
line diff
--- a/src/dbus-analyze-functions.py	Sat Jul 30 16:38:19 2005 +0000
+++ b/src/dbus-analyze-functions.py	Sat Jul 30 17:05:38 2005 +0000
@@ -53,6 +53,7 @@
 
 functions = []
 
+dparams = ""
 cparams = []
 cparamsout = []
 cdecls  = []
@@ -101,10 +102,11 @@
 
     print "return reply_DBUS;\n}\n"
 
-    functions.append(function)
+    functions.append((function, dparams))
 
 def c_clear():
-    global cparams, cdecls, ccode, cparamsout, ccodeout
+    global cparams, cdecls, ccode, cparamsout, ccodeout, dparams
+    dparams = ""
     cparams = []
     cdecls  = []
     ccode  = []
@@ -112,10 +114,21 @@
     ccodeout = []
 
 
+def addstring(*items):
+    global dparams
+    for item in items:
+        dparams += item + r"\0"
+
+def addintype(type, name):
+    addstring("in", type, name)
+
+def addouttype(type, name):
+    addstring("out", type, name)
+
 def printdispatchtable():
     print "static GaimDBusBinding bindings_DBUS[] = { "
-    for function in functions:
-        print '{"%s", %s_DBUS},' % (ctopascal(function), function)
+    for function, params in functions:
+        print '{"%s", "%s", %s_DBUS},' % (ctopascal(function), params, function)
     print "{NULL, NULL}"
     print "};"
     
@@ -135,6 +148,7 @@
            ((mytype[0] in simpletypes) or (mytype[0].startswith("Gaim"))):
         cdecls.append("dbus_int32_t %s;" % name)
         cparams.append(("INT32", name))
+        addintype("i", name)
         return
 
     # pointers ...
@@ -146,6 +160,7 @@
                 cdecls.append("const char *%s;" % name)
                 cparams.append(("STRING", name))
                 ccode  .append("NULLIFY(%s);" % name)
+                addintype("s", name)
                 return
             else:
                 raise myexception
@@ -157,6 +172,7 @@
             cparams.append(("INT32", name + "_ID"))
             ccode.append("GAIM_DBUS_ID_TO_POINTER(%s, %s_ID, %s, error_DBUS);"  % \
                            (name, name, mytype[0]))
+            addintype("i", name)
             return
 
         # unknown pointers are always replaced with NULL
@@ -165,6 +181,7 @@
             cdecls .append("%s *%s;" % (mytype[0], name))
             cparams.append(("INT32", name + "_NULL"))
             ccode  .append("%s = NULL;" % name)
+            addintype("i", name)
             return
 
     raise myexception
@@ -184,6 +201,7 @@
         cdecls.append("const char *%s;" % name)
         ccode.append("%s = null_to_empty(%s);" % (name, call))
         cparamsout.append(("STRING", name))
+        addouttype("s", name)
         return
 
     # simple types (ints, booleans, enums, ...)
@@ -192,6 +210,7 @@
         cdecls.append("dbus_int32_t %s;" % name)
         ccode.append("%s = %s;" % (name, call))
         cparamsout.append(("INT32", name))
+        addouttype("i", name)
         return
             
     # pointers ...
@@ -202,6 +221,7 @@
             cdecls.append("dbus_int32_t %s;" % name)
             ccode .append("GAIM_DBUS_POINTER_TO_ID(%s, %s, error_DBUS);" % (name, call))
             cparamsout.append(("INT32", name))
+            addouttype("i", name)
             return
 
         # GList*, GSList*, assume that list is a list of objects
@@ -215,6 +235,7 @@
             cparamsout.append("DBUS_TYPE_ARRAY, DBUS_TYPE_INT32, &%s, %s_LEN" \
                               % (name, name))
             ccodeout.append("g_free(%s);" % name)
+            addouttype("ai", name)
             return
 
     raise myexception