Hello,
في خ، 20-01-2011 عند 22:13 -0600 ، كتب W. Michael Petullo:
> I have written a GObject class that has the following property:
>
> [...]
> private uint8[] _thumbnail;
> [...]
> public uint8[] thumbnail {
> get { return _thumbnail; }
> set { _thumbnail = value; }
> }
> [...]
>
> When I run my application, I see:
>
> (lt-dpapview:13731): GLib-GObject-WARNING **: g_object_set_valist:
> object class `ValaDPAPRecord' has no property named `thumbnail'
>
> But, if I replace uint8[] with string, then I see no such error at
> runtime.
>
> When I inspect the generated C source, I find that there is no reference
> to thumbnail in _get and _set_property() when it is declared as a uint8[].
>
> Is this expected?
Yes, not all properties are registered with gobject. I don't know if
this is documented somewhere, but here is the source code:
http://git.gnome.org/browse/vala/tree/codegen/valagobjectmodule.vala#n695
In short, it won't be registered if it is private or static, if it is a
delegate with target, _if it is an array_ (except for string[]), or if
it is a struct that isn't registered with gtype.
You should be able to use _get_thumbnail and _set_thumbnail from C, it's
just that you cannot use g_object_set and g_object_get.
> What type should be used for properties that hold
> binary data, possibly read using GLib.FileUtils.get_data()?
That's a good question, to which I have no answer. uint8[] started being
used systematically for "binary data" only recently, so I doubt you'll
find a definitive answer. You can create a "wrapper" type (i.e. a struct
containing it as it's only field), but there may be there is a better
way.
HTH,
Abderrahim
_______________________________________________
vala-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/vala-list