Hi,
2010/3/25 Julian Andres Klode <[email protected]>:
> Hi,
>
> string[] properties are not installed via g_object_class_install_property (),
> which makes it impossible for json-glib to deserialize objects with array
> members.
I'm having the exact problem, with the exact use case [1], I was just
too lazy to post it :-)
> In the json-glib test code, I read the following:
> g_object_class_install_property (gobject_class,
> PROP_MAH,
> g_param_spec_boxed ("mah", "Mah", "Mah",
> G_TYPE_STRV,
> G_PARAM_READWRITE));
> Whereas mah is:
> gchar **mah;
>
> Would it be possible for Vala to do the same, so I don't have to convert
> arrays manually when working with json-glib?
It should be possible, but needs patching Vala. Making Vala register
the property is just something like :
diff --git a/codegen/valagobjectmodule.vala b/codegen/valagobjectmodule.vala
--- a/codegen/valagobjectmodule.vala
+++ b/codegen/valagobjectmodule.vala
@@ -717,7 +725,7 @@ internal class Vala.GObjectModule : GTypeModule {
return false;
}
- if (prop.property_type is ArrayType) {
+ if (prop.property_type is ArrayType &&
prop.property_type.get_type_id () == null) {
return false;
}
but the problem is in the *_[sg]et_property function : the property
setter/getter takes an extra "length" argument. Setting the property
should be trivial (I think we can just pass -1 as the array in a
GValue should null-terminated), but the getter may need some work.
(anyone familiar with vala's codegen?)
HTH,
Abderrahim
[1] I'm using json-glib to implement a vala parser for BuilDj
http://live.gnome.org/BuilDj
_______________________________________________
Vala-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/vala-list