Mercurial > pidgin
diff src/dbus-analyze-functions.py @ 11277:421a8523ad04
[gaim-migrate @ 13467]
added support for lists and hash tables to libgaim-client
committer: Tailor Script <tailor@pidgin.im>
author | Piotr Zielinski <zielaj> |
---|---|
date | Tue, 16 Aug 2005 15:22:35 +0000 |
parents | 66f872f30e40 |
children | b8c93c40ee2e |
line wrap: on
line diff
--- a/src/dbus-analyze-functions.py Mon Aug 15 22:48:20 2005 +0000 +++ b/src/dbus-analyze-functions.py Tue Aug 16 15:22:35 2005 +0000 @@ -190,11 +190,11 @@ print 'dbus_g_proxy_call(gaim_proxy, "%s", NULL,' % ctopascal(self.function.name) for type_name in self.inputparams: - print "G_TYPE_%s, %s, " % type_name, + print "%s, %s, " % type_name, print "G_TYPE_INVALID," for type_name in self.outputparams: - print "G_TYPE_%s, &%s, " % type_name, + print "%s, &%s, " % type_name, print "G_TYPE_INVALID);" for code in self.returncode: @@ -209,7 +209,8 @@ print "typedef struct _%s %s;" % (type[0], type[0]) self.knowntypes.append(type[0]) - # fixme + # fixme: import the definitions of the enumerations from gaim + # header files def definegaimenum(self, type): if (self.headersonly) and (type[0] not in self.knowntypes) \ and (type[0] not in simpletypes): @@ -218,28 +219,29 @@ def inputsimple(self, type, name): self.paramshdr.append("%s %s" % (type[0], name)) - self.inputparams.append(("INT", name)) + self.inputparams.append(("G_TYPE_INT", name)) self.definegaimenum(type) def inputvalist(self, type, name): - self.paramshdr.append("...") + self.paramshdr.append("va_list %s_NULL" % name) def inputstring(self, type, name): self.paramshdr.append("const char *%s" % name) - self.inputparams.append(("STRING", name)) + self.inputparams.append(("G_TYPE_STRING", name)) def inputgaimstructure(self, type, name): - self.paramshdr.append("%s *%s" % (type[0], name)) - self.inputparams.append(("INT", "GPOINTER_TO_INT(%s)" % name)) + self.paramshdr.append("const %s *%s" % (type[0], name)) + self.inputparams.append(("G_TYPE_INT", "GPOINTER_TO_INT(%s)" % name)) self.definegaimstructure(type) def inputpointer(self, type, name): - self.paramshdr.append("%s *%s" % (type[0], name)) - self.inputparams.append(("INT", "0")) + name += "_NULL" + self.paramshdr.append("const %s *%s" % (type[0], name)) + self.inputparams.append(("G_TYPE_INT", "0")) def inputhash(self, type, name): - raise myexception - + self.paramshdr.append("const GHashTable *%s" % name) + self.inputparams.append(('dbus_g_type_get_map ("GHashTable", G_TYPE_STRING, G_TYPE_STRING)', name)) def outputvoid(self, type, name): self.functiontype = "void" @@ -247,28 +249,33 @@ def outputstring(self, type, name, const): self.functiontype = "char*" self.decls.append("char *%s = NULL;" % name) - self.outputparams.append(("STRING", name)) + self.outputparams.append(("G_TYPE_STRING", name)) # self.returncode.append("NULLIFY(%s);" % name) self.returncode.append("return %s;" % name); def outputsimple(self, type, name): self.functiontype = type[0] self.decls.append("%s %s = 0;" % (type[0], name)) - self.outputparams.append(("INT", name)) + self.outputparams.append(("G_TYPE_INT", name)) self.returncode.append("return %s;" % name); self.definegaimenum(type) + # we could add "const" to the return type but this would probably + # be a nuisance def outputgaimstructure(self, type, name): name = name + "_ID" self.functiontype = "%s*" % type[0] self.decls.append("int %s = 0;" % name) - self.outputparams.append(("INT", "%s" % name)) + self.outputparams.append(("G_TYPE_INT", "%s" % name)) self.returncode.append("return (%s*) GINT_TO_POINTER(%s);" % (type[0], name)); self.definegaimstructure(type) def outputlist(self, type, name): - raise myexception - + self.functiontype = "%s*" % type[0] + self.decls.append("GArray *%s;" % name) + self.outputparams.append(('dbus_g_type_get_collection("GArray", G_TYPE_INT)', name)) + self.returncode.append("return garray_int_to_%s(%s);" % + (type[0].lower(), name)); class ServerBinding (Binding): @@ -535,6 +542,8 @@ else: fprefix = "" +sys.stderr.write("%s: Functions not exported:\n" % sys.argv[0]) + if "client" in options: bindings = ClientBindingSet(sys.stdin, fprefix, options.has_key("headers"))