+2006-01-19 Robert McQueen <robot101@debian.org>
+
+ * glib/dbus-binding-tool-glib.c: Patch from Rob Taylor
+ <rob.taylor@collabora.co.uk> to add support for generating bindings
+ to arrays that are represented as GPtrArrays rather than GArrays (ie
+ size-variable things, such as strings, objects, structs, etc).
+
2006-01-05 Robert McQueen <robot101@debian.org>
* dbus/dbus-glib.h, glib/dbus-gproxy.c: Patch from Ricardo Kekki
static const char *
dbus_g_type_get_c_name (GType gtype)
{
+ GType subtype;
if (dbus_g_type_is_collection (gtype))
- return "GArray";
+ {
+ subtype = dbus_g_type_get_collection_specialization(gtype);
+ if (_dbus_g_type_is_fixed (subtype))
+ return "GArray";
+ else
+ return "GPtrArray";
+ }
+
if (dbus_g_type_is_map (gtype))
return "GHashTable";
-
+
if (g_type_is_a (gtype, G_TYPE_STRING))
return "char *";
*/
if (g_type_is_a (gtype, G_TYPE_STRV))
return "char *";
+
if (g_type_is_a (gtype, DBUS_TYPE_G_OBJECT_PATH))
return "char";
-
+
return g_type_name (gtype);
}
{
GType elt_gtype;
char *sublookup;
-
+
elt_gtype = dbus_g_type_get_collection_specialization (gtype);
sublookup = dbus_g_type_get_lookup_function (elt_gtype);
g_assert (sublookup);
- type_lookup = g_strdup_printf ("dbus_g_type_get_collection (\"GArray\", %s)",
- sublookup);
+
+ if (_dbus_g_type_is_fixed (elt_gtype))
+ {
+ type_lookup = g_strdup_printf ("dbus_g_type_get_collection "
+ "(\"GArray\", %s)", sublookup);
+ }
+ else
+ {
+ type_lookup = g_strdup_printf ("dbus_g_type_get_collection "
+ "(\"GPtrArray\", %s)", sublookup);
+ }
+
g_free (sublookup);
+
return type_lookup;
}
else if (dbus_g_type_is_map (gtype))